【问题标题】:Saving data frame as text file format in pyspark? [duplicate]在pyspark中将数据框保存为文本文件格式? [复制]
【发布时间】:2018-10-25 15:42:40
【问题描述】:

我有如下数据框:

+-------+------+----+----+
|      a|     b|c   |d   |
+-------+-----------+----+
|    101|   244|   4|   1|
|    101|   245|   5|   0|
|    135|   396|   2|   1|
|    140|   247|   2|   1|
|    140|   313|   3|   0|
|    140|   380|   4|   0|
|    140|   558|   5|   0|
|    140|   902|   1|   1|
|    141|   240|   4|   0|
|    141|   275|   2|   1|
|    141|   387|   3|   0|
|    141|   388|   1|   1|
|    141|   528|   5|   0|
+------------+-----------+

如何将上述数据框保存为带有字段分隔符的文本文件格式是 |并且在保存我的输出文件后应该是 part-00000,part-00001 e.t.c

【问题讨论】:

  • 将其转换为pandas,然后保存为文本文件

标签: apache-spark pyspark apache-spark-sql pyspark-sql


【解决方案1】:

如果您想保持数据分隔,我会使用 csv 输出格式。例如,您可以这样做:

df = ...  # However you are building your df currently
df.write.format('csv').options("delimiter", "|").save(some_path)

some_path 是您的输出目的地。

【讨论】:

  • @RyanW..感谢您的快速回复。我想保存为文本文件格式。如果我保存为 csv,它保存为“part-00001-170c5986-48eb-445f-940e-7dbf1a4d5ab7-c000.csv”,这里我在部分之后得到一些随机数-000001 like -170c5986-48eb-445f-940e-7dbf1a4d5ab7-c000 ,如何避免这个随机数。请帮助我,谢谢。
  • 据我所知,你不能...... Spark 被构建为将你的数据分成块(分区)并运行每个块,为每个块输出一个文件。 Spark 对它们进行编号以在编写时保持它们的唯一性。如果你真的只是一个文件,那么你可以使用“df.coalesce(1).write....”,但这只有在你知道输出的数据非常少的情况下才有意义。
  • 我有 2 GB 的数据帧。它会生成多个文件..但是在部分_******_一些随机数之后。我想避免随机数
  • 我不认为你可以。当我需要找出它们的名称时,我通常只使用适当的 DFS 工具(hdfs、aws s3 cli 等)或它们的等效 python 库来列出输出文件夹中的文件。或者您可以选择使用它在事后重命名它们,但在 S3 情况下这很昂贵。
  • 是的,我正在使用 s3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多