我的文件包含具有不同结构的多行。每一列都可以根据位置识别,具体取决于行的类型。
例如,我们可以有一个像这样的文件:
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。
我希望我的问题足够清楚。谢谢您的时间
答案 0 :(得分:0)
使用RDD.map将每个记录转换为标准格式。 然后编写一个用于汇总所有信息列的汇总函数。您可以在其中添加信息列的逻辑。使用键(first_name,last_name)聚集记录,并为信息列调用聚集函数。