繁体   English   中英

从文件读取Spark数组到Spark数据帧

[英]Read Array Of Jsons From File to Spark Dataframe

我有一个压缩的JSON文件,其中包含JSON数组,如下所示:

[{"Product":{"id"1,"image":"/img.jpg"},"Color":"black"},{"Product":{"id"2,"image":"/img1.jpg"},"Color":"green"}.....]

我知道这不是读入Scala的理想数据格式,但是别无选择,只能以这种方式处理提要。

我努力了 :

spark.read.json("file-path") 

这似乎需要很长时间(如果以MB为单位的数据处理速度非常快,但是对于GB的数据则需要花费很长时间),这可能是因为spark无法拆分文件并将其分配给其他执行者。

想查看是否有任何方法可以预处理此数据并将其作为数据帧加载到spark上下文中。

我想要的功能似乎类似于: 从json对象创建pandas数据框 但是我想看看是否有任何scala替代方案可以做到类似并将数据转换为Spark RDD / dataframe。

您可以使用spark.read().text("gzip-file-path")读取“ gzip”文件。 由于Spark API构建在HDFS API之上,因此Spark可以读取gzip文件并将其解压缩以读取文件。

https://github.com/mesos/spark/blob/baa30fcd99aec83b1b704d7918be6bb78b45fbb5/core/src/main/scala/spark/SparkContext.scala#L239

但是,gzip是不可拆分的,因此spark创建具有单个分区的RDD。 因此,使用spark读取gzip文件没有意义。

您可以解压缩gzip文件并读取解压缩的文件,以充分利用分布式处理体系结构。

似乎出现了问题,将数据格式提供给spark进行处理。 我必须对数据进行预处理,以将格式更改为Spark友好格式,然后在其上运行Spark进程。 这是我最终要做的预处理: https : //github.com/dipayan90/bigjsonprocessor/blob/master/src/main/java/com/kajjoy/bigjsonprocessor/Application.java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM