具有不同结构的Spark处理文件

时间:2018-09-06 10:22:29

标签: scala apache-spark

我的文件包含具有不同结构的多行。每一列都可以根据位置识别,具体取决于行的类型。

例如,我们可以有一个像这样的文件:

row_type1  first_name1 last_name1   info1   info2
row_type2 last_name1 first_name1 info3  info2
row_type3info4info1last_name1first_name1 

我们知道每种行类型的每一列的位置,我们可以使用子字符串来获取它们。

目标数据帧将为“ first_name1,last_name1,info1,info2,info3,info4),且没有重复(first_name1,last_name1)

例如info1在第一行和第三行中重复。我还需要选择我保留的那个。例如,如果第一行的info1为空或仅包含2个字符,我将选择第三行的info1。

我正在使用Spark 2.2 + Scala 2.10。

我希望我的问题足够清楚。谢谢您的时间

1 个答案:

答案 0 :(得分:0)

使用RDD.map将每个记录转换为标准格式。 然后编写一个用于汇总所有信息列的汇总函数。您可以在其中添加信息列的逻辑。使用键(first_name,last_name)聚集记录,并为信息列调用聚集函数。