gpt4 book ai didi

ScalaSpark - 使用键和值列表创建一对 RDD

转载 作者:行者123 更新时间:2023-12-01 23:30:50 24 4
gpt4 key购买 nike

我有一个包含以下数据的日志文件:

1,2008-10-23 16:05:05.0,\N,Donald,Becton,2275 Washburn Street,Oakland,CA,94660,5100032418,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0
2,2008-11-12 03:00:01.0,\N,Donna,Jones,3885 Elliott Street,San Francisco,CA,94171,4150835799,2014-03-18 13:29:47.0,2014-03-18 13:29:47.0

我需要创建一对 RDD,以邮政编码为键,以该邮政编码中的名称 (Last Name,First Name) 列表作为值。

我需要使用 mapValues 并执行了以下操作:

val namesByPCode = accountsdata.keyBy(line => line.split(',')(8)).mapValues(fields => (fields(0), (fields(4), fields(5)))).collect()

但是我收到一个错误。有人可以告诉我我的陈述有什么问题吗?

最佳答案

keyBy 不会更改值,因此该值保持为单个“未拆分”字符串。您想首先使用 map 执行拆分(以获得 RDD[Array[String]]),然后使用 keyBymapValues 就像你对拆分结果所做的那样:

val namesByPCode = accountsdata.map(_.split(","))
.keyBy(_(8))
.mapValues(fields => (fields(0), (fields(4), fields(5))))
.collect()

顺便说一句 - 根据您的描述,如果您希望每个邮政编码评估为带有名称列表的单个记录。 keyBy 不执行分组,它只是将 RDD[V] 转换为 RDD[(K, V)] 留下每条记录单个记录(可能有许多具有相同“键”的记录)。

关于ScalaSpark - 使用键和值列表创建一对 RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com