擅长:python、mysql、java
<p>它正在创建一个包含多个文件的文件夹,因为每个分区都是单独保存的。如果需要单个输出文件(仍在文件夹中),可以<code>repartition</code>(如果上游数据很大,但需要洗牌,则首选):</p>
<pre><code>df
.repartition(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")
</code></pre>
<p>或<code>coalesce</code>:</p>
<pre><code>df
.coalesce(1)
.write.format("com.databricks.spark.csv")
.option("header", "true")
.save("mydata.csv")
</code></pre>
<p>保存前数据帧:</p>
<p>所有数据都将写入<code>mydata.csv/part-00000</code>。在使用此选项之前,请确保您了解正在进行的操作,以及将所有数据传输到单个工人的成本。如果将分布式文件系统与复制一起使用,则数据将被多次传输—首先提取到单个工作机,然后在存储节点上分发。</p>
<p>或者,您可以保持代码原样,然后使用诸如<code>cat</code>或<a href="https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html#getmerge" rel="noreferrer">HDFS ^{<cd5>}</a>之类的通用工具简单地合并所有部分。</p>