使用spark将多个文件中的列转换为单个文件

w51jfk4q  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(326)

我试图从一个文件夹中的多个csv文件加载数据到一个csv文件中。所有文件都将具有不同的架构,但将有一个公共主键。
文件的示例结构如下
文件1:pk,col1,col2,col3
文件2:pk,cold,cola,colb,colc
文件3:pk,a,b,c
最终的文件结构应该如下所示
pk、col1、col3、a、cold、c、colc
最后,文件将保存在Parquet或三角格式。
请建议如何使用spark、scala解决此问题
添加一些示例文件内容以便更好地理解。
文件1
emp|u id | emp|u name | job|u name | dep|u id
68319 | kayling |总裁| 1001
66928 |火焰|经理| 3001
67832 |克莱尔|经理| 1001
65646 |乔纳斯|经理| 2001
67858 | scarlet |分析师| 2001
文件2
员工id经理id雇佣日期
68319 | | 1991-11-18
66928 | 68319 | 1991-05-01
67832 | 68319 | 1991-06-09
65646 | 68319 | 1991-04-02
67858 | 65646 | 1997-04-19
文件3
员工id |工资
68319 | 6000.00
66928 | 2750.00
67832 | 2550.00
65646 | 2957.00
67858 | 3100.00
最终结果
员工id |员工姓名|工作名称|经理id |雇用日期|工资|部门id
68319 | kayling |总裁| 1991-11-18 | 6000.00 | 1001
66928 |火焰|经理| 68319 | 1991-05-01 | 2750.00 | 3001
67832 |克莱尔|经理| 68319 | 1991-06-09 | 2550.00 | 1001
65646 |乔纳斯|经理| 68319 | 1991-04-02 | 2957.00 | 2001
67858 | scarlet |分析师| 65646 | 1997-04-19 | 3100.00 | 2001

qxsslcnc

qxsslcnc1#

一次性阅读所有文件
只选择那些你想输入到新数据框中的列。

val columns = List("PK","Col1","Col3","A","ColD","C","ColC")
val newDF = spark.read.csv("File1","File2","File3").select(columns.map(col):_*)
newDf.write.parquet("/parquet.file")

相关问题