python - 有没有更好的方法来编写这个 pyspark 拆分代码?
问题描述
学习大数据和 pyspark。
我有 RDD 客户
[u'1,Richard,Hernandez,XXXXXXXXX,XXXXXXXXX,6303 Heather Plaza,Brownsville,TX,78521']
要获取客户编号和客户名字 + 姓氏元组,我有以下代码。
custname = customers.map(lambda x: (x.split(",")[8], x.split(",")[1] + " " + x.split(",")[2]))
所以我的元组是(78521, (Richard Hernandez))
有没有更好的方法来编写上面的代码,即不是拆分3次,可以有一个拆分并且拆分的元素可以连接或类似的东西
解决方案
使用flatMap() + 列表理解:
>>> customers.flatMap(lambda x: [ (e[8], e[1]+' '+e[2]) for e in [x.split(",")] ]).collect()
[(u'78521', u'Richard Hernandez')]
顺便提一句。您当然可以为您的任务编写一个函数:
def myfunc1(x):
arr = x.split(',')
return (arr[8], arr[1]+' '+arr[2])
customers.map(myfunc1).collect()
# [(u'78521', u'Richard Hernandez')]
或者:
def myfunc2(arr): return (arr[8], arr[1]+' '+arr[2])
customers.map(lambda x: myfunc2(x.split(','))).collect()
或者:
customers.map(lambda x: (lambda y: (y[8], y[1]+' '+y[2]))(x.split(','))).collect()
推荐阅读
- webdav - 仅对 WebDAV 集合中的某些资源执行 PROPFIND?
- angular - Angular - 有没有办法将服务实例化推迟到应用程序异步初始化?
- python - 将浮点数附加到日期列表
- swift - 在视图中设置高度并忽略安全的顶部边缘
- html - 如何在另一个formArray中迭代字符串数组的formArray?
- python - 如何在熊猫数据框中查找重复项
- c# - 尽管生成的查询在 Oracle 数据库中运行良好,但 SqlQuery 返回 ora-00911 无效字符
- javascript - 重构的 onclick 函数不运行
- firebase - Firebase 项目共享工作流中的多个应用
- nginx - Nginx 仅在将工作进程用户设置为 root 时有效