参见英文答案 >
Read whole text files from a compression in Spark 2个
我正在尝试从压缩成tar的几个json文件创建Spark RDD.
例如,我有3个文件
我正在尝试从压缩成tar的几个json文件创建Spark RDD.
例如,我有3个文件
file1.json file2.json file3.json
这些包含在archive.tar.gz中.
我想从json文件创建一个数据帧.问题是Spark没有正确读取json文件.使用sqlContext.read.json(“archive.tar.gz”)或sc.textFile(“archive.tar.gz”)创建RDD会导致出现乱码/额外输出.
UPDATE
使用Read whole text files from a compression in Spark的答案中给出的方法,我能够运行,但这种方法似乎不适合大型tar.gz存档(> 200 mb压缩),因为应用程序会在大型存档大小上窒息.由于我正在处理的一些档案在压缩后达到了2 GB的大小,我想知道是否有一些有效的方法来处理这个问题.
解决方法
在
Read whole text files from a compression in Spark中给出了解决方案.
使用提供的代码示例,我能够从压缩存档创建数据框,如下所示:
使用提供的代码示例,我能够从压缩存档创建数据框,如下所示:
val jsonRDD = sc.binaryFiles("gzarchive/*"). flatMapValues(x => extractFiles(x).toOption). mapValues(_.map(decode()) val df = sqlContext.read.json(jsonRDD.map(_._2).flatMap(x => x))
这个问题的一个更好的解决方案似乎是将tar档案转换为hadoop SequenceFiles,它们是可拆分的,因此可以在Spark中并行读取和处理(与tar档案相对).
请参阅:stuartsierra.com/2008/04/24/a-million-little-files
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。