Как правильно принять все значения полей json как String в Spark Scala? - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в Spark и примеряю руки. В настоящее время у меня есть схема, с помощью которой я загружаю данные json в Spark. Структура JSON выглядит следующим образом:

{
   "value1": 345.2
   "value2": 32
}

Я использую следующую схему для чтения этой структуры json:

val myJsonschema = StructType(
        Array(
            StructField("value1", StringType)
            StructField("value2", StringType)
        )
)

Я применяю схему как:

val dataFrame_val1_val2 = myDataStream.select(from_json(col("value").cast("string"), myJsonschema).as("data"))

Однако, когда я проверяю содержимое dataFrame_val1_val2, я получаю двойные значения как {"$numberDouble":"345.2"} вместо просто 345.2. Для целых чисел работает нормально.

Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

В вашем случае вообще не требуется указывать схему; Spark выведет для вас схему:

spark.read.json(“yourfile.json”).show
0 голосов
/ 30 августа 2018

попробуйте изменить тип схемы

val schemaJson = new StructType().add(StructField("value1",FloatType)).add(StructField("value2",IntegerType))

json.select(from_json($"json", schemaJson) as "value")
  .withColumn("value1",$"value.value1").withColumn("value2",$"value.value2").drop("value")
  .show( 5 , false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...