我正在尝试用Python语言以列表理解的方式编写flatMap函数!
simpleRDD = sc.parallelize([2,3,4])
print(simpleRDD.map(lambda x:range(1, x)).collect())
输出是这样的:
[[1], [1, 2], [1, 2, 3]]
我已经写了这样的Map函数,它工作了,这是正确的方式吗?
def myRange(x):
return [x for x in range(1,x)]
def myMap(func, myList):
return [func(i) for i in myList]
print(myMap(myRange, [2, 3, 4]))
但是,如果我想编写flatMap并实现以下代码在spark中生成的内容,它将无法工作。
print(simpleRDD.flatMap(lambda x:range(1, x)).collect())
输出为:
[1, 1, 2, 1, 2, 3]
这是我的尝试,但不起作用。
def myRange(x):
return [x for x in range(1,x)]
def myFlatMap(func, myList):
return [*(func(i) for i in myList)]
print(myFlatMap(myRange , [2, 3, 4]))
发布于 2018-12-21 16:20:43
您可以使用reduce:
flat_array = reduce((lambda arr1, arr2: arr1 + arr2), array_of_arrays)
https://stackoverflow.com/questions/51002997
复制相似问题