Почему несколько наборов данных имеют массив структур в Apache Spark - PullRequest
0 голосов
/ 17 января 2020

Я вижу, что несколько наборов данных имеют массив Struct внутри элемента вместо массива String или Integer.

 |-- name: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- value: string (nullable = true)

Мне было интересно, почему, потому что в конечном итоге я хочу иметь возможность представлять Массив строк тогда зачем иметь структуру между ними.

1 Ответ

1 голос
/ 17 января 2020

Вы можете хранить массив строк, используя ArrayType и StructField. Вам не нужно использовать StructType внутри StructField. В этом примере column2 может содержать массив String. Пожалуйста, смотрите схему для "column2". Тем не менее, схема для всей строки будет иметь вид StructType.

StructType( 
Array(
StructField("column1", LongType, nullable = true),
StructField("column2", ArrayType(StringType, true), nullable = true)
)
)

. Вам необходим StructType для хранения сложного типа, состоящего из множества типов данных. Это как держать стол в столбце. Пожалуйста, смотрите схему для "column2".

StructType( 
Array(
StructField("column1", LongType, nullable = true),
StructField("column2", ArrayType(StructType(Array(
      StructField("column3", StringType, nullable = true),
      StructField("column4", StringType, nullable = true))),
 true)
)
)
...