Spark SQL: возможно ли читать пользовательскую схему из внешнего источника вместо ее создания в коде искры? - PullRequest
0 голосов
/ 13 ноября 2018

Попытка загрузить CSV-файл без вывода схемы. Обычно мы создаем схему как StructType в коде искры. Можно ли сохранить схему во внешнем файле (это может быть файл свойств / конфигурации) и прочитать его динамически при создании кадра данных?

val customSchema_v2 = new StructType()
  .add("PROPERTY_ID_2222", "int" )
  .add("OWNER_ID_2222", "int")

Можно ли сохранить схему, т. Е. "PROPERTY_ID_2222", "int" и "OWNER_ID_2222", "int", в файле и вызвать схему оттуда?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете использовать JSON для схем.

import org.apache.spark.sql.types._

val customSchema_v2 = new StructType()
                         .add("PROPERTY_ID_2222", "int" )
                         .add("OWNER_ID_2222", "int")

val schemaString = customSchema_v2.json

println(schemaString)

val loadedSchema = DataType.fromJson(schemaString)

КОНСОЛЬ Выход:

{"type":"struct","fields":[{"name":"PROPERTY_ID_2222","type":"integer","nullable":true,"metadata":{}},{"name":"OWNER_ID_2222","type":"integer","nullable":true,"metadata":{}}]}

Вам потребуется добавить код, который читает схему из файлов JSNO.

Файлы JSON также могут быть созданы вручную и могут иметь красивый формат. Чтобы понять это, лучше добавить больше столбцов с разными типами данных и использовать customSchema_v2.prettyJson для изучения синтаксиса.

0 голосов
/ 13 ноября 2018

И StructType, и StructField могут быть сериализуемыми, поэтому вы можете сериализовать StructType в файл и десериализовать его, когда вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...