Apache Spark读取每个记录RDD或DF的一个复杂JSON文件

时间:2016-01-07 02:05:08

标签: json apache-spark

我有一个HDFS目录,其中包含以下JSON文件格式:

https://www.hl7.org/fhir/bundle-transaction.json.html

我希望做的是找到一种方法来将每个单独的文件展平为一个df记录或rdd元组。我已经尝试过使用read.json(),wholeTextFiles()等所能想到的一切。

如果有人有任何最佳实践建议或指示,我们将非常感激。

2 个答案:

答案 0 :(得分:1)

通过wholeTextFiles加载如下内容:

sc.wholeTextFiles(...) //RDD[(FileName, JSON)
  .map(...processJSON...) //RDD[JsonObject]

然后,您只需调用.toDF方法,即可从JsonObject推断出来。

processJSON方法而言,您可以使用类似Play json parser

的内容

答案 1 :(得分:-1)

当必须处理以不同元素可以在不同行上的方式构造的数据时,使用

mapPartitions。我使用mapPartitions使用JSON和XML。

mapPartitions一次处理整个数据块,而不是单个元素。虽然您应该能够使用带有JSON的DataFrameReader API,但mapPartitions绝对可以按照您的意愿执行。我没有确切的代码来压缩JSON文件,但我相信你可以搞清楚。请记住输出必须是可迭代类型。