从 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 而不是那个。
在 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 而不是那个。