wor*_*ise 3 python python-2.7 apache-spark pyspark
我正在尝试将字典键(从json.loads())转换为整数map()。我知道我可以用循环来做到这一点,但我试图在功能上做到这一点,所以我可以在 spark 中实现它。例如:
import pyspark as ps
import json
# Uses all 4 cores on your machine
sc = ps.SparkContext('local[4]')
file_rdd = sc.textFile('data/cookie_data.txt')
kv_rdd_json = file_rdd.map(lambda x: json.loads(x))
kv_rdd2 = kv_rdd_json.map(lambda x: map(int, x.get)) # here's the issue
kv_rdd.collect()
Run Code Online (Sandbox Code Playgroud)
我有另一种使用函数的方法,但我很好奇:我如何在 pyspark(和 python2,python3 的奖励)中使用 .map 来做到这一点?
根据评论:示例数据(明文):
{"Jane": "2"}
{"Jane": "1"}
{"Pete": "20"}
{"Tyler": "3"}
{"Duncan": "4"}
{"Yuki": "5"}
{"Duncan": "6"}
{"Duncan": "4"}
{"Duncan": "5"}
Run Code Online (Sandbox Code Playgroud)
如何将 dict 值转换为 int 的示例: Python:如何将字典值列表从字符串转换为 int/float?
for key in mydict.keys():
mydict[key] = int(mydict[key])
Run Code Online (Sandbox Code Playgroud)
.get 有点像这里:Sort a Python dictionary by value
小智 5
dict(zip(mydict, map(int, mydict.values())))
Run Code Online (Sandbox Code Playgroud)
或者使用 lambda:
dict(map(lambda x: (x[0], int(x[1])), mydict.items()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |