我有一个Dataframe和一个我将在s3中编写一个.csv文件我使用以下代码:
df.coalesce(1).write.csv("dbfs:/mnt/mount1/2016//product_profit_weekly",mode='overwrite',header=True)
它把一个.csv文件放在product\u profit\u weekly文件夹中,目前.csv文件在s3中有一个奇怪的名字,我写它的时候可以选择一个文件名吗?
我有一个Dataframe和一个我将在s3中编写一个.csv文件我使用以下代码:
df.coalesce(1).write.csv("dbfs:/mnt/mount1/2016//product_profit_weekly",mode='overwrite',header=True)
它把一个.csv文件放在product\u profit\u weekly文件夹中,目前.csv文件在s3中有一个奇怪的名字,我写它的时候可以选择一个文件名吗?
1条答案
按热度按时间pgky5nke1#
所有的sparkDataframe写入程序(df.write.\uuuu)都不会写入单个文件,而是为每个分区写入一个块。我想你得到的是一个名为
里面有一个文件叫
在这种情况下,您所做的事情可能效率很低,而且不太“有Spark”——您将所有Dataframe分区合并到一个分区中,这意味着您的任务实际上没有并行执行!
这是一个不同的模型。利用所有spark并行化,这意味着不合并,并并行写入某个目录。
如果您有100个分区,您将得到:
如果你需要把所有的东西都放在一个平面文件中,那就编写一个小函数来合并它。您可以在scala中执行此操作,也可以在bash中使用: