美文网首页
spark笔记:常见的RDD操作(python)

spark笔记:常见的RDD操作(python)

作者: Liping7 | 来源:发表于2019-04-22 17:43 被阅读0次

    参考图灵程序设计丛书,Spark快速大数据分析一书

    1.从外部读取数据创建RDD

    lines = sc.textFile("/path/to/README.md")

    2.转化操作和行动操作

    转化操作:返回一个新的RDD操作,如map()和fliter(),返回值是RDD。所有的转化操作都是惰性求职,在被调用行动操作之前不会开始计算。

    行动操作:向驱动器程序返回结果或者把结果写入外部系统的操作,会触发实际的计算,比如count()和first(),返回值是其他数据类型。

    3.对单个RDD的转化操作

    对1个数据为{1,2,3,3}的RDD进行操作

    nums = sc.parallelize([1,2,3,3])

    (1) map():对每个元素运用一个函数,返回值构成新的RDD

    out =  nums.map(lambda x: x+1)

    结果{2,3,4,4}

    (2) fliter():返回一个传给fliter()的函数元素构成的RDD

    out = nums.fliter(lambda x: x != 1)

    结果{2,3,3}

    (3) distinct():去重

    out = nums.distinct()

    结果{1,2,3}

    (4)sample(withRepalcement,fraction,[seed]) :采样,以及是否替换

    out = nums.sample(false,0.5)

    结果不确定

    4.对两个RDD的转化操作

    两个RDD分别为nums{1,2,3}和other{3,4,5}

    (1)union():生成1个RDD包含2个RDD的所有元素

    out = nums.union(other)

    结果{1,2,3,3,4,5}

    (2)intersection():求两个RDD共同元素的RDD

    out = nums.intersection(other)

    结果{3}

    (3)intersection():求两个RDD共同元素的RDD

    out = nums.intersection(other)

    结果{3}

    (4)substract():移除其中另一个RDD的内容

    out = nums.substract(other)

    结果{1,2}

    (5)cartesian():两个RDD的笛卡尔乘积

    out = nums.cartesian(other)

    结果{(1,3),(1,4),……(3,5)}

    5.对一个RDD的基本动作操作

    对1个数据为{1,2,3,3}的RDD进行操作

    (1)collect():返回RDD中的所有元素

    nums.collect()  #最好不要用,除非你的RDD非常小

    结果{1,2,3,3}

    (2)count():RDD中的元素个数

    nums.count()  

    结果 4

    (3)countbyvalue():RDD中各个元素及其出现的次数

    nums.countbyvalue()

    结果{(1,1),(2,1),(3,2)}

    (4)top(2):RDD中最前面的两个元素
    nums.top(2)

    结果{1,2}

    (5)reduce(func):并行整合RDD中所有的数据(如sum)

    nums.reduce(lambda x,y: x+y)

    结果9

    (6)aggregate(func):和reduce相似,通常返回不同类型的函数

    (7)foreach(func):对RDD每个元素使用给定的元素

    相关文章

      网友评论

          本文标题:spark笔记:常见的RDD操作(python)

          本文链接:https://www.haomeiwen.com/subject/gbmygqtx.html