Pyspark 合并两个大文本文件

Posted

技术标签:

【中文标题】Pyspark 合并两个大文本文件【英文标题】:Pyspark combine two large text files 【发布时间】:2020-07-21 06:42:49 【问题描述】:

我有两个带有一些数据的大文本文件 file_1.txtfile_2.txt。我想将这些文件中的数据写入单个文件output.txt,格式如下:

file_1.txt数据:

header info 1
header info 2
.
.
.
header info n

file_2.txt数据:

body info 1
body info 2
.
.
.
body info n

output.txt数据:

header info 1
header info 2
.
.
.
header info n

body info 1
body info 2
.
.
.
body info n

使用 pyspark 或任何其他 python 模块最快的方法是什么?

编辑:

我使用的是 Windows 10

【问题讨论】:

cat file_1.txt file_2.txt > output.txt 在 Linux 上你可以做 cat file1.txt file2.txt > output.txt 。至于我使用 pyspark 将一个文件附加到另一个文件过于复杂。 谢谢大家,但我使用的是 Windows 10 然后在 powershell 中 type file_1.txt file_2.txt > output.txt 联合是最好的选择,只要确保你的列名相同 【参考方案1】:

这是一个 PySpark 实现。最快/最佳的连接实施取决于平台、文件大小、压缩方法。

您可以将文件读入单个 DataFrame。假设这两个文件都在some_folder

df = spark.read.text("some_folder")

df.repartition(1).write.text("some_output")

您也可以读入文件以分离 DataFrame,合并 DataFrame,然后写出结果。

df1 = spark.read.text("file1.txt")
df2 = spark.read.text("file1.txt")
unioned = df1.union(df2)
unioned.repartition(1).write.text("some_output")

【讨论】:

以上是关于Pyspark 合并两个大文本文件的主要内容,如果未能解决你的问题,请参考以下文章

两个大文本文件的高效文件比较

大文件文本数据处理

Python - 检查两个大文本文件之间的一致性

仅将两个文本大文件与 Java 中的 URL 与外部存储器进行比较?

Linux命令应用大词典-第6章 文件处理

关于FileStream读取大文件问题