首页 > 解决方案 > 如何将多个文件重新组合为一个?

问题描述

我是 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 的几种方法,但我完全迷失了......

谢谢

标签: scalaapache-sparkdataframe

解决方案


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


推荐阅读