如何计算 spark RDD 中的出现次数并将其 return 作为字典?
How do I count the number of occurrences in a spark RDD and return it as a dictionary?
我正在加载一个 csv 文件作为数据框,并将其转换为 RDD。此 RDD 包含城市列表,如 [NY,NY,NY,LA,LA,LA,Detroit,Miami]。我希望能够像这样提取每个城市的频率:
纽约:3
洛杉矶:3
底特律:1
迈阿密:1
我知道我可以使用数据框函数来完成此操作,但我需要专门使用 RDD 函数(如 map、过滤器等)来执行此操作
这是我到目前为止尝试过的:
df= spark.read.format("csv").option("header", "true").load(filename)
newRDD = df.rdd.map(lambda x: x[6]).filter(lambda x: x!=None)
我刚刚在包含城市的数据框中获取上述代码中的第 6 列
你可以试试reduceByKey
.
>>> df = spark.createDataFrame(["NY","NY","NY","LA","LA","LA","Detroit","Miami"], StringType())
>>> rdd2 = df.rdd.map(lambda x: (x[0],1)).reduceByKey(lambda x, y: x+y)
>>> rdd2.collect()
[('Detroit', 1), ('NY', 3), ('LA', 3), ('Miami', 1)]
我正在加载一个 csv 文件作为数据框,并将其转换为 RDD。此 RDD 包含城市列表,如 [NY,NY,NY,LA,LA,LA,Detroit,Miami]。我希望能够像这样提取每个城市的频率:
纽约:3 洛杉矶:3 底特律:1 迈阿密:1
我知道我可以使用数据框函数来完成此操作,但我需要专门使用 RDD 函数(如 map、过滤器等)来执行此操作
这是我到目前为止尝试过的:
df= spark.read.format("csv").option("header", "true").load(filename)
newRDD = df.rdd.map(lambda x: x[6]).filter(lambda x: x!=None)
我刚刚在包含城市的数据框中获取上述代码中的第 6 列
你可以试试reduceByKey
.
>>> df = spark.createDataFrame(["NY","NY","NY","LA","LA","LA","Detroit","Miami"], StringType())
>>> rdd2 = df.rdd.map(lambda x: (x[0],1)).reduceByKey(lambda x, y: x+y)
>>> rdd2.collect()
[('Detroit', 1), ('NY', 3), ('LA', 3), ('Miami', 1)]