如何计算spark rdd中出现的次数并将其作为字典返回?

vm0i2vca  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(397)

我正在加载一个csv文件作为Dataframe,并将其转换为rdd。此rdd包含[纽约,纽约,纽约,洛杉矶,洛杉矶,底特律,迈阿密]等城市的列表。我希望能够提取每个城市的频率,如下所示:
纽约:3洛杉矶:3底特律:1迈阿密:1
我知道我可以用dataframe函数来实现这一点,但是我需要用rdd函数来实现这一点,比如map、filter等。
以下是我迄今为止尝试的:

df= spark.read.format("csv").option("header", "true").load(filename)
        newRDD = df.rdd.map(lambda x: x[6]).filter(lambda x: x!=None)

我刚刚在包含城市的Dataframe中得到上述代码的第6列

jfgube3f

jfgube3f1#

你可以试试 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)]

相关问题