【发布时间】:2021-11-23 15:10:45
【问题描述】:
我在纺织品中有以下类型的数据集:
1004,bb5469c5|2021-09-19 01:25:30,4f0d-bb6f-43cf552b9bc6|2021-09-25 05:12:32,1954f0f|2021-09-19 01:27:45,4395766ae|2021-09-19 01:29:13,
1018,36ba7a7|2021-09-19 01:33:00,
1020,23fe40-4796-ad3d-6d5499b|2021-09-19 01:38:59,77a90a1c97b|2021-09-19 01:34:53,
1022,3623fe40|2021-09-19 01:33:00,
1028,6c77d26c-6fb86|2021-09-19 01:50:50,f0ac93b3df|2021-09-19 01:51:11,
1032,ac55-4be82f28d|2021-09-19 01:54:20,82229689e9da|2021-09-23 01:19:47,
我使用sc.textFile 读取文件,它返回一个Array[String] 类型的RDD,之后我执行.map(x=>x.substring(1,x.length()-1)).map(x=>x.split(",").toList) 操作
在split.toList 之后,我想将获得的每个列表的第一个元素映射到我使用 .map(x=>(x(0),x(1))).toDF("c1","c2") 的列表的每个其他元素
这适用于那些在拆分后只有一个值但出于明显原因跳过具有多个值的列表的所有其他元素的列表。例如:
.map(x=>(x(0),x(1))) 返回 [1020,23fe40-4796-ad3d-6d5499b|2021-09-19 01:38:59] 但此处跳过第三个元素 77a90a1c97b|2021-09-19 01:34:53
如果使用.map(x=>x.split(",").toList) 创建的所有列表长度不同(元素数量不同),我该如何编写返回[1020,23fe40-4796-ad3d-6d5499b|2021-09-19 01:38:59], [1020,77a90a1c97b|2021-09-19 01:34:53] 的映射函数?
【问题讨论】:
-
你看过
tail方法吗?它为您提供列表中除第一个之外的所有元素。 -
但我需要第一个元素。那是主键。我需要将键与列表的所有元素映射以获得唯一的键值对。就像在示例中一样 - 1020 是具有 2 个后续值的主键。它应该与两者配对。
标签: scala apache-spark mapping