lad*_*ads 10 python hdfs apache-spark pyspark spark-submit
我使用连接到集群,然后使用ssh将程序发送到集群
spark-submit --master yarn myProgram.py
Run Code Online (Sandbox Code Playgroud)
我想将结果保存在文本文件中,我尝试使用以下行:
counts.write.json("hdfs://home/myDir/text_file.txt")
counts.write.csv("hdfs://home/myDir/text_file.csv")
Run Code Online (Sandbox Code Playgroud)
但是,它们都不起作用.程序结束,我找不到文本文件myDir.你知道我怎么能这样做吗?
还有,有没有办法直接写到我的本地机器?
编辑:我发现该home目录不存在所以现在我将结果保存为:
counts.write.json("hdfs:///user/username/text_file.txt")
但是这会创建一个名为的目录text_file.txt,里面我有很多文件,里面有部分结果.但是我想要一个包含最终结果的文件.我有什么想法可以做到这一点?
由于计算是分布式的,Spark会将结果保存在多个文件中.因此写作:
counts.write.csv("hdfs://home/myDir/text_file.csv")
Run Code Online (Sandbox Code Playgroud)
意味着将每个分区上的数据保存为文件夹中 的单独文件text_file.csv.如果您希望将数据保存为单个文件,coalesce(1)请先使用:
counts.coalesce(1).write.csv("hdfs://home/myDir/text_file.csv")
Run Code Online (Sandbox Code Playgroud)
这会将所有数据放入一个分区,因此保存的文件数将为1.但是,如果您拥有大量数据,这可能是一个坏主意.如果数据非常小,那么使用collect()是另一种选择.这会将所有数据作为数组放入驱动程序计算机,然后可以将其保存为单个文件.
| 归档时间: |
|
| 查看次数: |
2191 次 |
| 最近记录: |