我在 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/

10-11 08:03