【问题标题】:How to Read Json inside a Json in Spark RDD?如何在 Spark RDD 的 Json 中读取 Json?
【发布时间】:2021-05-26 08:25:48
【问题描述】:

我有这个示例数据: 另存为test.json

{
    "memberId": "Test0001",
    "params": {"field1":"testField","field2":"testField2"}
    "withoutValueSample": {}
}

这就是我在 Spark 中的阅读方式:

val session: SparkSession = SparkSession.builder().getOrCreate()
val inputRdd: RDD[Row] = session.read.json(test.json).rdd

我知道这是获取 memberId 的方法: inputRdd.forEach(i => i.getString(0))

但是,我不知道如何获取“params”和“withoutValueSample”的值。我尝试执行.get(<index>).asInstanceOf[JsonObject],但出现此错误:java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast to io.circe.JsonObject

如何获取参数和 withoutValueSample?谢谢。

【问题讨论】:

    标签: json scala apache-spark


    【解决方案1】:

    import org.apache.spark.sql.Row

    在 spark DataFrame 中,JSON 对象读取为 Row 对象,因此您可以像下面这样访问内部 JSON:

    • inputRdd.forEach(i => i.getAs[Row](1))
    • inputRdd.forEach(i => i.getAs[Row]("params"))

    (ps:你代码里面的i其实也是一个Row对象。)

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 2016-10-30
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      相关资源
      最近更新 更多