使用 python 和“|”将 spark 数据帧写入文件分隔符

Posted

技术标签:

【中文标题】使用 python 和“|”将 spark 数据帧写入文件分隔符【英文标题】:Write spark dataframe to file using python and '|' delimiter 【发布时间】:2017-01-26 12:17:11 【问题描述】:

我已经从查询构造了一个 Spark 数据框。我想要做的是将数据框打印到一个文本文件中,所有信息都由“|”分隔,如下所示:

+-------+----+----+----+
|Summary|col1|col2|col3|
+-------+----+----+----+
|row1   |1   |14  |17  |
|row2   |3   |12  |2343|
+-------+----+----+----+

我该怎么做?

【问题讨论】:

【参考方案1】:

您可以尝试写入 csv,选择 | 的分隔符

df.write.option("sep","|").option("header","true").csv(filename)

这不会 100% 相同,但会很接近。

或者,您也可以收集给司机并自己做,例如:

myprint(df.collect())

myprint(df.take(100))

df.collect 和 df.take 返回行列表。

最后你可以使用topandas收集到驱动程序并使用pandas工具

【讨论】:

【参考方案2】:

Spark 2.0+ 中,您可以使用内置的 CSV 写入器。这里delimiter默认为,,你可以设置为|

df.write \
    .format('csv') \
    .options(delimiter='|') \
    .save('target/location')

【讨论】:

以上是关于使用 python 和“|”将 spark 数据帧写入文件分隔符的主要内容,如果未能解决你的问题,请参考以下文章

Databricks:如何将 %python 下的 Spark 数据帧转换为 %r 下的数据帧

将 Python UDF 应用于 Spark 数据帧时出现 java.lang.IllegalArgumentException

使用 spark python 拆分数据帧

Spark:如何在每个执行程序中创建本地数据帧

如何在 python 中消除 apache spark 数据帧中的标头和尾标

在 Python/PySpark 中 Spark 复制数据框列的最佳实践?