【发布时间】:2018-10-08 18:04:45
【问题描述】:
我想使用 Spark 数据帧来实现以下要求来比较 2 个文本/csv
- 列表项
文件。理想情况下,File1.txt 应该与 File2.txt 进行比较,结果应该在其他带有标志的 txt 文件中(SAME/UPDATE/INSERT/DELETE)。
UPDATE - 与 file1 相比,如果 file2 中的任何记录值更新 INSERT - 如果 file2 中存在新记录 DELETE - 仅当记录存在于 file1 中(不在 file2 中) SAME - 如果两个文件中存在相同的记录
File1.txt
NO DEPT NAME SAL
1 IT RAM 1000
2 IT SRI 600
3 HR GOPI 1500
5 HW MAHI 700
File2.txt
NO DEPT NAME SAL
1 IT RAM 1000
2 IT SRI 900
4 MT SUMP 1200
5 HW MAHI 700
Outputfile.txt
NO DEPT NAME SAL FLAG
1 IT RAM 1000 S
2 IT SRI 900 U
4 MT SUMP 1200 I
5 HW MAHI 700 S
3 HR GOPI 1500 D
到目前为止,我做了以下编码。但无法进一步进行。请帮忙。
from pyspark.shell import spark
sc = spark.sparkContext
df1 = spark.read.option("header","true").option("delimiter", ",").csv("C:\\inputs\\file1.csv")
df2 = spark.read.option("header","true").option("delimiter", ",").csv("C:\\inputs\\file2.csv")
df1.createOrReplaceTempView("table1")
df2.createOrReplaceTempView("table2")
sqlDF1 = spark.sql( "select * from table1" )
sqlDF2 = spark.sql( "select * from table2" )
leftJoinDF = sqlDF1.join(sqlDF2, 'id', how='left')
rightJoinDF = sqlDF1.join(sqlDF2, 'id', how='right')
innerJoinDF = sqlDF1.join(sqlDF2, 'id')
如果我们在执行leftJoin,rightJoin,innerJoin之后合并数据,有什么办法。有了这个,我是否可以获得所需的输出或任何其他方式。
谢谢,
【问题讨论】: