首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Spark和Python编写flatMap函数

用Spark和Python编写flatMap函数
EN

Stack Overflow用户
提问于 2018-06-24 00:22:53
回答 1查看 2.2K关注 0票数 2

我正在尝试用Python语言以列表理解的方式编写flatMap函数!

代码语言:javascript
复制
simpleRDD = sc.parallelize([2,3,4])
print(simpleRDD.map(lambda x:range(1, x)).collect())

输出是这样的:

代码语言:javascript
复制
[[1], [1, 2], [1, 2, 3]]

我已经写了这样的Map函数,它工作了,这是正确的方式吗?

代码语言:javascript
复制
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中生成的内容,它将无法工作。

代码语言:javascript
复制
print(simpleRDD.flatMap(lambda x:range(1, x)).collect())

输出为:

代码语言:javascript
复制
[1, 1, 2, 1, 2, 3]

这是我的尝试,但不起作用。

代码语言:javascript
复制
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]))
EN

回答 1

Stack Overflow用户

发布于 2018-12-21 16:20:43

您可以使用reduce:

代码语言:javascript
复制
flat_array = reduce((lambda arr1, arr2: arr1 + arr2), array_of_arrays)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51002997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档