Я новичок в scala и пытаюсь создать собственную схему из массива элементов для чтения файлов на основе новой пользовательской схемы.
Я прочитал массивы из файла json и использовал метод разнесения и создал фрейм данных для каждого элемента в массиве столбцов.
val otherPeople = sqlContext.read.option("multiline", "true").json(otherPeopleDataset)
val column_values = otherPeople.withColumn("columns", explode($"columns")).select("columns.*")
column_values.printSchema()
Получен вывод:
column_values: org.apache.spark.sql.DataFrame = [column_id: string, data_sensitivty: string ... 3 more fields]
root
|-- column_id: string (nullable = true)
|-- data_sensitivty: string (nullable = true)
|-- datatype: string (nullable = true)
|-- length: string (nullable = true)
|-- name: string (nullable = true)
val column_name = column_values.select("name","datatype")
column_name: org.apache.spark.sql.DataFrame = [name: string, datatype: string]
column_name.show(4)
+-----------------+--------+
| name|datatype|
+-----------------+--------+
| object_number| varchar|
| function_type| varchar|
| hof_1| varchar|
| hof_2| varchar|
| region| varchar|
| country| varchar|
+-----------------+--------+
Теперь для всех значений, перечисленных выше, я хотел создать val Схема динамически.
пример:
val schema = new StructType()
.add("object_number",StringType,true)
.add("function_type",StringType,true)
.add("hof_1",StringType,true)
.add("hof_2",StringType,true)
.add("region",StringType,true)
.add("Country",StringType,true)
Я хочу динамически строить вышеупомянутую структуру, как только я получил столбец данных, я прочитал, что сначала мне нужно создать карту типа данных для каждого элемента, а затем создать структуру в l oop. Может ли кто-нибудь помочь здесь, поскольку у меня ограниченные знания scala.