scala-如何使用json4s爆炸类似于DataFrame的JSON数组?

时间:2018-08-07 10:20:05

标签: json scala apache-spark dataframe json4s

我从包含商店信息和销售信息的两个不同API端点处理JSON的最初方法是:将每个商店的JValue(struct)与相应的销售JValue(包含销售数组)连接。然后,我创建了一个DataFrame并分解了Sales数组,以便以后可以从中选择数据。

 val salesDf: DataFrame = salesRawDf.select($"stores", explode($"sales").as("sl"))
          .select($"stores.id", $"stores.name", $"sl.id", $"sl.current_sales", $"sl.review")

但是现在看来,爆炸会导致巨大的开销,并且在运行Spark作业时我得到OutOfMemoryError: Java heap space

因此,我决定在并行执行之前修改逻辑并解析连接JValues的地方的销售额。

使用json4s解析JSON时,上述exploding销售数组的相似之处是什么?现在,我以这种方式连接商店和销售:

  def mergeSales(storeJValue: JValue): String = {
    val salesJValue: JValue = parse(rawJson)

    val store = compact(render(storeJValue))
    val sales = compact(render(salesJValue))
    val mergedSales: String = s"""{"store":$store,"sales":$sales}"""

    mergedSales
  }

0 个答案:

没有答案