我已使用连接到集群,ssh并使用将程序发送到集群
ssh
spark-submit --master yarn myProgram.py
我想将结果保存在文本文件中,并尝试使用以下几行:
counts.write.json("hdfs://home/myDir/text_file.txt") counts.write.csv("hdfs://home/myDir/text_file.csv")
但是,它们都不起作用。程序完成,我在中找不到文本文件myDir。你知道我该怎么做吗?
myDir
另外,有没有一种方法可以直接写入本地计算机?
编辑:我发现该home目录不存在,所以现在我将结果另存为: counts.write.json("hdfs:///user/username/text_file.txt") 但这会创建一个名为的目录,text_file.txt并且我里面有很多文件,里面有部分结果。但是我想要一个包含最终结果的文件。有什么想法我该怎么做?
home
counts.write.json("hdfs:///user/username/text_file.txt")
text_file.txt
由于计算是分布式的,因此Spark会将结果保存在多个文件中。因此写:
counts.write.csv("hdfs://home/myDir/text_file.csv")
表示将每个分区上的数据保存为文件 夹中 的独立文件text_file.csv。如果要将数据保存为单个文件,请coalesce(1)首先使用:
text_file.csv
coalesce(1)
counts.coalesce(1).write.csv("hdfs://home/myDir/text_file.csv")
这会将所有数据放入一个分区,因此保存的文件数将为1。但是,如果您有很多数据,这可能是个坏主意。如果数据非常小,则使用collect()替代方法。这会将所有数据作为数组放置在驱动程序计算机上,然后可以将其保存为单个文件。
collect()