У меня есть JSON как
{ 1234 : "blah1", 9807: "blah2", 467: "blah_k", ...}
, записанный в сжатом файле.Это отображение одного пространства идентификаторов в другое, где ключи int
с и значения string
с.
Я хочу загрузить его как DataFrame
в Spark.
Я загрузил его как
val df = spark.read.format("json").load("my_id_file.json.gz")
По умолчанию Spark загрузил его со схемой, которая выглядит как
|-- 1234: string (nullable = true)
|-- 9807: string (nullable = true)
|-- 467: string (nullable = true)
Вместо этого я хочу свой DataFrame
чтобы выглядеть как
+----+------+
|id1 |id2 |
+----+------+
|1234|blah1 |
|9007|blah2 |
|467 |blah_k|
+----+------+
Итак, я попробовал следующее.
import org.apache.spark.sql.types._
val idMapSchema = StructType(Array(StructField("id1", IntegerType, true), StructField("id2", StringType, true)))
val df = spark.read.format("json").schema(idMapSchema).load("my_id_file.json.gz")
Однако загруженный фрейм данных выглядит как
scala> df.show
+----+----+
|id1 |id2 |
+----+----+
|null|null|
+----+----+
Как мне указатьсхема это исправить?Существует ли «чистый» подход к фрейму данных (без создания RDD и последующего создания DataFrame)?