如何将几个文件重新组合为一个?

时间:2018-12-12 14:27:33

标签: scala apache-spark dataframe

我是Spark的初学者,我必须将存储在几个文件中的所有数据重新分组为一个。

注意:我已经使用过Talend,我的目标是使用Spark(scala)做同样的事情。

示例

文件1:

id | attr1.1 | attr1.2 | attr1.3
1  |   aaa   |   aab   |   aac
2  |   aad   |   aae   |   aaf

文件2:

id | attr2.1 | attr2.2 | attr2.3
1  |   lll   |   llm   |   lln
2  |   llo   |   llp   |   llq

文件3:

id | attr3.1 | attr3.2 | attr3.3
1  |   sss   |   sst   |   ssu
2  |   ssv   |   ssw   |   ssx

希望输入:

id |attr1.1|attr1.2|attr1.3|attr2.1|attr2.2|attr2.3|attr3.1|attr3.2|attr3.3
1  |  aaa  |  aab  |  aac  |  lll  |  llm  |  lln  |  sss  |  sst  |  ssu
2  |  aad  |  aae  |  aaf  |  llo  |  llp  |  llq  |  ssv  |  ssw  |  ssx

我有9个关于订单,客户,物品等的文件,还有数十万行,这就是为什么我必须使用Spark。幸运的是,数据可以与ID绑定在一起。

文件格式为.csv

最终目标:最终目标是从Spark生成的文件中进行一些可视化处理。

问题:那么,能否给我一些完成此任务的线索?我用RDD或DataFrame看到了几种方法,但是我完全迷路了...

谢谢

1 个答案:

答案 0 :(得分:1)

您没有指定任何有关原始文件格式的信息,因此假设您已将它们放在数据帧f1,f2中...您可以通过将它们val unified=f1.join(f2,f1("id")===f2("id")).join(f3, f1("id")===f3("id"))....加入来创建统一的数据帧