在Databricks PySpark

时间:2017-09-02 19:44:55

标签: apache-spark pyspark databricks

我确信在某个地方有这方面的文档和/或解决方案很明显,但我在所有搜索中都已经枯竭了。

我有一个数据框,我想将文本文件导出到本地计算机。数据框包含带逗号的字符串,因此只显示 - >下载完整的结果导致导出失真。我想用制表符分隔符导出,但我不知道如何在本地下载它。

我有

match1.write.format("com.databricks.spark.csv")
.option("delimiter", "\t")
.save("file:\\\C:\\Users\\user\\Desktop\\NewsArticle.txt")

但显然这不对。我怀疑它是在别的地方写的(某个地方我不想让它变成......)因为再次运行它会给我一个路径已经存在的错误。那么...... 的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

cricket_007指向我的正确路径 - 最终,我需要将文件保存到Databricks的文件存储区(不仅仅是dbfs),然后保存xxxxx.databricks.com/file/[insert文件的结果输出这里的路径]链接。

我的结果代码是:

df.repartition(1) \ #repartitioned to save as one collective file
.write.format('csv') \ #in csv format
.option("header", True) \ #with header
.option("quote", "") \ #get rid of quote escaping
.option(delimiter="\t") \ #delimiter of choice
.save('dbfs:/FileStore/df/') #saved to the FileStore

答案 1 :(得分:0)

检查它是否存在于以下位置。该文件夹中应该有多个零件文件。

import os
print os.getcwd()

如果你想创建一个单独的文件(而不是多个部分文件),那么你可以使用coalesce()(但请注意,它会强制一个工作人员获取整个数据并按顺序写入这些文件以便#39} ;如果处理大量数据,则不可取)

df.coalesce(1).write.format("csv").\
    option("delimiter", "\t").\
    save("<file path>")

希望这有帮助!