zoukankan      html  css  js  c++  java
  • Spark之join、leftOuterJoin、rightOuterJoin及fullOuterJoin

    Spark的join与mysql的join类似,mysql的join是将表与表之间连接查询,spark中join是将RDD数据集进行连接,Spark主要有join、leftOuterJoin、rightOuterJoin及fullOuterJoin这4种连接

    join:相当于mysql的INNER JOIN,当join左右两边的数据集都存在时才返回

    leftOuterJoin:相当于mysql的LEFT JOIN,leftOuterJoin返回数据集左边的全部数据和数据集左边与右边有交集的数据

    rightOuterJoin:相当于mysql的RIGHT JOIN,rightOuterJoin返回数据集右边的全部数据和数据集右边与左边有交集的数据

    fullOuterJoin:返回左右数据集的全部数据,左右有一边不存在的数据以None填充

    下面以代码看个例子:

    from pyspark import SparkConf, SparkContext
    
    conf = SparkConf()
    sc = SparkContext(conf=conf)
    
    
    def func_join():
        a = sc.parallelize([("name", "Alice"), ("age", 20), ("job", "student"), ("fav", "basket")])
        b = sc.parallelize([("name", "Bob"), ("age", 22), ("address", "WuHan")])
        print("join:{}".format(a.join(b).collect()))
        print("leftOuterJoin:{}".format(a.leftOuterJoin(b).collect()))
        print("rightOuterJoin:{}".format(a.rightOuterJoin(b).collect()))
        print("fullOuterJoin:{}".format(a.fullOuterJoin(b).collect()))
    
    
    func_join()
    sc.stop()
    
    """
    result:
    join:[('name', ('Alice', 'Bob')), ('age', (20, 22))]                            
    leftOuterJoin:[('fav', ('basket', None)), ('name', ('Alice', 'Bob')), ('job', ('student', None)), ('age', (20, 22))]
    rightOuterJoin:[('name', ('Alice', 'Bob')), ('age', (20, 22)), ('address', (None, 'WuHan'))]
    fullOuterJoin:[('fav', ('basket', None)), ('name', ('Alice', 'Bob')), ('job', ('student', None)), ('age', (20, 22)), ('address', (None, 'WuHan'))]
    """
  • 相关阅读:
    word2vec
    视频推荐系统
    python基础
    go-elasticsearch
    Docker 部署 go项目
    gohbase
    禅道部署linux
    jmeter 报错 Error occurred during initialization of VM Could not reserve enough space for object heap
    jarvis OJ-DSA
    算法-我的第一本算法书(一)
  • 原文地址:https://www.cnblogs.com/FG123/p/9747901.html
Copyright © 2011-2022 走看看