Spark写镶木地板文件:ShortCircuitReplica:非法搜寻

时间:2015-10-02 01:36:44

标签: hadoop apache-spark hdfs

我从文本文件中将100m记录加载到Spark中,然后将它们写为按日期分区的镶木地板。

重复失败
15/10/01 16:46:14 WARN BlockReaderFactory: BlockReaderFactory(fileName=/user/vora/fact_pos/CALENDAR_DATE=2006-05-18/part-r-00318-831b6a4a-562d-45c2-bd58-d94be989b0bf.gz.parquet, block=BP-784895517-10.32.50.16-1441344668219:blk_1073765006_24182): error creating ShortCircuitReplica.
java.io.IOException: Illegal seek at sun.nio.ch.FileDispatcherImpl.pread0(Native Method)

Pyspark命令:

...
lines = sc.textFile("file:///path/to/file/fact_pos_100m.csv")    
...
schemaPeople.write.format("parquet").mode("overwrite").partitionBy("CALENDAR_DATE").save("fact_pos")
p_parquet = sqlContext.read.option("mergeSchema", "true").parquet("fact_pos")

HDFS日志不表示任何错误。这是在单节点集群SLES 11.3上运行在Hortonworks 2.2(HDP 2.2.6.0-2800)上的Spark 1.4.1。该进程没有内存不足(我已分配100gb; open_files(4096)或磁盘空间(兆兆字节))。我正在加载一个32亿行文件的前100米行。

我的问题:有没有更好的方法将CSV文件读入spark并将其作为分区拼花文件写回HDFS?我需要处理一个更大的文件,我更喜欢在不删除文件的情况下执行此操作;但火花需要将数据传输到镶木地板隔断。实现这一目标的最佳技术是什么?

由于 马克蒂恩 新加坡

0 个答案:

没有答案