如何计算 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)]