由spark RDD操作重新认识python部分内置高阶函数

最近由hadoop转对spark的了解和学习,由于对scala并不熟悉,只能借用python来进行对应的操作了。其中RDD是spark的核心内容,叫做弹性分布式数据集。主要有三种基本的运算:转换(Transformation)、动作(Action)以及持久化(Persistence)。其中转换和动作的操作命令好些同python自带高阶函数一致,所以对python的代码重新学习一番,主要涉及map、reduce、filter三个。

1、map()

实现集体映射功能,传入两个参数,一个为函数一个为Iterable。例如对一个list中的所有元素平方,mylist=[1,2,3,4,5]。

def f(x):

    return x*x

sqr=list(map(f,mylist))

2、filter()

用于实现过滤,接收一个函数和一个Iterable,根据计算的返回值True or False实现对数据的保留与否。例如对上述mylist进行奇数的提取,可以使用filter函数实现。

def f(n):

    return n%2==1

fil=list(filter(f,mylist))

3、reduce()

实现函数作用于序列各元素,函数需要两个输入参数,reduce实现将函数结果与序列中的下一个元素作累积的功能。等效reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)。例如将某个序列转为整数mylist=[1,3,5,7]转为1357,参考如下:

from functools import reduce

def red(x,y):

    return x*10+y

reduce(red,mylist)

出去上述这些命令类似,RDD还有min、max、count、sum等数据操作命令,熟悉基本的命令是掌握spark RDD的基本,以上,简单学习总结。

%1 $ S

发表评论

电子邮件地址不会被公开。 必填项已用*标注