从 SPARK 中的 RDD 中查找最大长度的单词

Finding the word with maximal length from RDD in SPARK

在 SPARK Databricks 中工作我想从 RDD wordRDD.

中找到最大长度的单词

我在Python中创建了一个函数:

def compare_strings_len(x, y):
if len(x) > len(y):
    print(x)
elif len(x) < len(y):
    print('String 2 is longer: ', y)
else:
    print(min(x,y))    

我想使用下面的代码在 reduce 中插入这个函数:

    word_length = (
    wordRDD
    .map(lambda x : (x, 1))
    .reduceByKey(lambda x, y : compare_strings_len)
)
print(word_length)

我得到的结果是:

PythonRDD[151] at RDD at PythonRDD.scala:58

我做错了什么?

感谢

谢谢。已解决:

wordRDD.reduce(compare_strings_len)

这里有几个问题:

  • reduce 函数需要 return 返回实际值,而不仅仅是打印结果。它应该是这样的:
def compare_strings_len(x, y):
  if len(x) > len(y):
    return x

  return y
  • 而不是reduceByKey,应该使用reduce函数

  • 你需要在执行reduce后从RDD获取结果,比如:word_length[0]

P.S。坦率地说,我会使用 Spark SQL 而不是那个。