Структурированная потоковая загрузка JSON конвертировать в столбец вывода является нулевым - PullRequest
0 голосов
/ 27 июня 2018

JsonData похожа на {reId: "1",ratingFlowId: "1001",workFlowId:"1"}, и я использую программу следующим образом:

case class CdrData(reId: String, ratingFlowId: String, workFlowId: String)

object StructuredHdfsJson {
  def main(args: Array[String]): Unit = {
     val spark = SparkSession
      .builder()
      .appName("StructuredHdfsJson")
      .master("local")
      .getOrCreate()

     val schema = Encoders.product[CdrData].schema
     val lines =  spark.readStream
       .format("json")
       .schema(schema)
       .load("hdfs://iotsparkmaster:9000/json")
     val query = lines.writeStream
       .outputMode("update")
       .format("console")
       .start()

     query.awaitTermination()
   }
}

Но выходные данные null, а именно:

------------------------------------------- 
Batch: 0 
------------------------------------------- 

+----+------------+----------+
|reId|ratingFlowId|workFlowId|
+----+------------+----------+
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
|null|        null|      null|
+----+------------+----------+

1 Ответ

0 голосов
/ 27 июня 2018

Вероятно, Spark не может проанализировать ваш JSON. Эта проблема может быть связана с пробелами (или любыми другими символами внутри JSON. Вы должны попытаться очистить данные и снова запустить приложение.

Изменить после комментария (для будущих читателей): ключи должны быть заключены в кавычки

Редактировать 2: согласно спецификации json ключи представлены строками, а каждая строка должна быть заключена в кавычки. Spark использует анализатор Джексона для преобразования строк в объект

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