我在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并查看目录中的文件时,它们都是空的。有谁知道为什么会发生这种情况?谢谢!
答案 0 :(得分:0)
使用collect()
在saveAsTextFile()
来电之前检索并打印数据。这应该告诉你RDD究竟是什么。最简单的解释是RDD是否为空。
你为什么要coalesce(1)
?这可以防止您处理大量数据。我建议不要这样做。但是,如果数据很小,并且您确实想拥有一个文件,则只需使用collect()
并从驱动程序中写入文件,而不是使用saveAsTextFile()
。