从Snappy到ORC文件的Spark 2.x流/分页数据

时间:2017-11-01 23:09:37

标签: apache-spark apache-spark-sql

我想出了如何使用Spark 2.x将Snappy文件中的整个数据读入数据集,然后将该数据写入ORC格式(参见Java: Read JSON from a file, convert to ORC and write to a file)。

然而,我处理的Snappy文件非常大(500MB-1GB)并且导致我对OOM的火花过程。

我正在寻找一种方法来流式传输或分页Snappy数据,并将其以较小的块写入ORC。

我尝试使用

Dataset<Row> events = sparkSession.readStream()
            .options(inputConfig.getProperties())
            .format("json")
            .schema(mySchema)
            .load(inputPath);

StreamingQuery frameWriter = events.selectExpr(JavaConversions.asScalaBuffer(outputSchema.getColumns())).writeStream()
            .format("orc")
            .option("compress", "zlib")
            .option("format", "append")
            .option("path", outputPath)
            .start();

但是,上面没有产生任何ORC文件,大概是因为从Snappy文件中读取的内容实际上不是流式传输,所以在这里使用readStream / writeStream可能并不合适。但是,也许有一种方法可以将Snappy文件中的读取作为流来公开?

或者我应该使用&#34;选择*偏移X限制Y&#34;我从Snappy文件中读取的分页数据的方法?

谢谢, 艾力

0 个答案:

没有答案