我在 Python 中工作,使用 Hadoop 和 PySpark。我在代码末尾输出了一个 RDD(我已经验证它输出正确),我正在尝试使用 .saveAsTextFile()
方法将其保存为文本文件。
代码运行完成并生成 _success
文件,但目录的其余部分为空。
outputFile='hdfs:///data/withCoalesce'
combinedTable= all_transactions_reduced.join(credit_payments_reduced)
combinedTableMapped= combinedTable.map(lambda x: (x[0], list(x[1][0])+x[1][1]))
combinedTableMapped.coalesce(1, shuffle=True).saveAsTextFile(outputFile)
当我进入 Hadoop FS 并查看目录中的文件时,它们都是空的。有谁知道为什么会发生这种情况?谢谢!
最佳答案
在 collect()
调用之前使用 saveAsTextFile()
检索和打印数据。这应该会告诉您 RDD 中到底有什么。最简单的解释是 RDD 是否为空。
你为什么要做 coalesce(1)
?这可以防止您处理大量数据。我建议不要这样做。但是,如果数据很小,并且你真的想要一个文件,你可以只使用 collect()
并从驱动程序写入文件,而不是使用 saveAsTextFile()
。
关于python - SaveAsTextFile 未写入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28003231/