Spark中使用Lambda函数实现词频排名映射的问题求助
解决PySpark中Lambda函数映射排名与单词的问题
你的代码存在两个关键问题:
topWords[x]会直接取出列表中第x个位置的完整元组(即(单词, 词频)),而你需要的是元组里的第一个元素(单词)map方法不需要额外传入twentyK作为第二个参数,这是冗余的写法
正确的映射代码应该是:
dictionary = twentyK.map(lambda x: (topWords[x][0], x))
验证方式
可以用take()方法查看前几个结果,确认是否符合预期:
print(dictionary.take(5))
预期输出示例:
[("the", 0), ("to", 1), ("a", 2), ("and", 3), ("of", 4)]
注意事项
topWords是驱动端的本地列表,Spark会自动将其序列化后分发到各个executor节点,20000条数据的大小完全在合理范围内,无需担心性能问题。
内容的提问来源于stack exchange,提问作者akj
相关产品推荐
相关产品推荐

