spark快速大数据分析之学习记录(五)

题外话:这是一个“连载”,主要用于记录并监督我每周的Spark学习进程

【上周毕业典礼,放肆high~~~】

1、RDD基础

RDD(risilient distributed dataset )弹性分布式数据集,简单理解成不可变的分布式的元素集合

2.创建RDD【python】

创建RDD有两种:外部读取文件和自定义传递集合给SparkContext

shell命令:

lines=sc.parallelize(["pandas","i love pandas"])#传递集合
lines.count()

运行截图:

shell命令:

lines=sc.textFile("README.md")#读取外部文件
lines.count()

运行截图:

2.RDD操作【python】

RDD操作分为两种:转化操作和行动操作,其中转化操作是指由一个RDD转化为另一个RDD,行动操作是指在RDD上所进行的具体的计算,得出具体的值。值得注意的是,转化操作为惰性求值,我目前是这样理解的,当你转化时,该操作并不是立即发生,而是随之后续行动操作指令的发出从而进行转化操作。

shell命令:新建文件并输入日志信息

cd ~/桌面/py  #进入桌面文件夹py(自建)
touch log.txt #新建日志文件
sudo vim log.txt #向日志文件中输入信息
cat log.txt #查看刚输入的信息

运行截图:

spark快速大数据分析之学习记录(五)_第1张图片

shell命令

lines=sc.textFile("/home/Hadoop/桌面/py/log.txt") #外部读取文件,创建RDD
errorLines=lines.filter(lambda x:"error" in x) #筛选出包含error的行,errorLines为RDD,转化操作
errorLines.count() #统计行数,行动操作
warningLines=lines.filter(lambda x:"warning" in x) #筛选出包含warning的行,warningLines为RDD,转化操作
warningLines.first() #求第一行,行动操作
badLinesRDD=errorLines.union(warningLines) #合并errorLines和warningLines,badLinesRDD为RDD,转化操作
badLinesRDD.count() #统计行数 ,行动操作

运行截图:

spark快速大数据分析之学习记录(五)_第2张图片

3.向Spark传递函数【python】

python中有三种方式传递函数,lambda表达式、自定义局部函数、顶层函数

shell命令:

word=lines.filter(lambda s:"error" in s) #lambda函数
word.first()

def containError(s): #自定义局部函数
    return "error" in s
word.containError(containError)

class SearchFunction(): 
    def __init__(self,query):
        return self.query
    def __getMatchesMenberReference(self,rdd):
        query=self.query #将需要的字段从对象中拿出来放到一个局部变量中
        return rdd.filter(lambda x:query in x)
sf=SearchFunction("error")
sf.getMatchesMemberReference(lines)

    

运行截图:

spark快速大数据分析之学习记录(五)_第3张图片

spark快速大数据分析之学习记录(五)_第4张图片

 

 

你可能感兴趣的:(Spark)