我正在为学校做一个项目,在一个提供的小集群上(4个节点,1个是namenode和Spark master(。我正在做计算,然后将火花数据帧作为ORC文件写入hadoop。然后我得到以下错误:
Caused by: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/myfile.orc/_temporary/0/_temporary/attempt_20180521123532_0005_m_000010_3/part-00010-1dd484de-2d33-4a51-8029-737aa957264e-c000.snappy.orc could only be replicated to 0 nodes instead of minReplication (=1). There are 3 datanode(s) running and no node(s) are excluded in this operation.
并且有些隐藏在堆栈跟踪中:
Suppressed: java.lang.IllegalArgumentException: Column has wrong number of index entries found: 0 expected: 36
总数据集为 5000 万行。 如果我限制为 10,000 行,它可以正常工作。
那么是什么导致了这个问题呢?磁盘空间充足。
编辑:
法典:
df.write.format("orc").mode("overwrite").save("hdfs://namenode-server:9000/user/myfile.orc")
编辑2:
还是毕竟是磁盘空间?
Decommission Status : Normal
Configured Capacity: 20082696192 (18.70 GB)
DFS Used: 1665830730 (1.55 GB)
Non DFS Used: 12819447990 (11.94 GB)
DFS Remaining: 4719075328 (4.39 GB)
DFS Used%: 8.29%
DFS Remaining%: 23.50%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon May 21 14:31:52 CEST 2018
源文件为 1.5 Gb(txt 文件格式(,一些数据被添加到其中,然后另存为 ORC。也许这确实需要超过 4.39 GB 的空间。
大多数情况下,这种情况发生在来自不同池或不同提交的应用程序的同一位置的并行录制中。 例如,您提交了两次申请,或者您以公平的方式使用公平的调度程序池。