У меня есть следующий фрейм данных искры в R:
df <- SparkR::read.df(path, "json", schema = schema)
Моя схема построена следующим образом:
schema <-
SparkR::structType(
structField('visitor_id', 'string'),
structField('timestamp','string')
)
Моя проблема состоит в том, что в 'df' есть несколько вложенных столбцов. Столбец метки времени является вложенным, и схема строится неправильно. Текущий заголовок и схема выглядят следующим образом:
schema(df)
StructType
|-name = "visitor_id", type = "StringType", nullable = TRUE
|-name = "timestamp", type = "StringType", nullable = TRUE
Метка времени не должна быть NA
head(df)
visitor_id timestamp
1 abc123 <NA>
2 abc123 <NA>
3 abc123 <NA>
6 abc123 <NA>
Схема и заголовок должны быть чем-то похожим на приведенный ниже вывод, который я фиктивно создал, где аргумент 'type' в SparkR :: structField () для 'data' и 'udo' является структурами, а не строками:
schema(df)
StructType
|-name = "visitor_id", type = "StringType", nullable = TRUE
| |-name = " data ", type = struct, nullable = TRUE
| |-name = " udo ", type = struct, nullable = TRUE
| |-name = " timestamp ", type = "StringType", nullable = TRUE
head(df)
visitor_id timestamp
1 abc123 1581949496
2 abc123 1581969492
3 abc123 1581978651
6 abc123 1581912570
Моя попытка построить схему ниже - это когда временная метка существует в два вложенных столбца «data» и «udo», где структура «data» и «udo» - это structTypes, а не строки. Я надеюсь, что аргумент type в structField () может быть чем-то отличным от строки. В документации к пакету и при использовании онлайн-ресурсов я не нашел примеров схем, созданных с помощью SparkR, которые бы работали с неплоскими таблицами json. Есть ли решение этой проблемы с помощью SparkR?
schema1 <-
SparkR::structType({
structField('visitor_id', 'string')
structField('data', structType({
structField('udo', structType({
structField('timestamp','string')
})
)
})
)
})
Error in structField.character("udo", structType({ :
Field type must be a string.