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'))]
"""

Spark之join、leftOuterJoin、rightOuterJoin及fullOuterJoin的更多相关文章

  1. 【原创】大数据基础之Spark(8)Spark中Join实现原理

    spark中join有两种,一种是RDD的join,一种是sql中的join,分别来看: 1 RDD join org.apache.spark.rdd.PairRDDFunctions /** * ...

  2. Spark SQL join的三种实现方式

    引言 join是SQL中的常用操作,良好的表结构能够将数据分散到不同的表中,使其符合某种规范(mysql三大范式),可以最大程度的减少数据冗余,更新容错等,而建立表和表之间关系的最佳方式就是join操 ...

  3. spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)

    问题 datafrme提供了强大的JOIN操作,但是在操作的时候,经常发现会碰到重复列的问题.在你不注意的时候,去用相关列做其他操作的时候,就会出现问题! 假如这两个字段同时存在,那么就会报错,如下: ...

  4. Spark学习之路(十二)—— Spark SQL JOIN操作

    一. 数据准备 本文主要介绍Spark SQL的多表连接,需要预先准备测试数据.分别创建员工和部门的Datafame,并注册为临时视图,代码如下: val spark = SparkSession.b ...

  5. Spark 系列(十二)—— Spark SQL JOIN 操作

    一. 数据准备 本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据.分别创建员工和部门的 Datafame,并注册为临时视图,代码如下: val spark = SparkSessio ...

  6. spark dataset join 使用方法java

    dataset<Row> df1,df2,df3 //该方法可以执行成功 df3= df1.join(df2,"post_id").selectExpr("h ...

  7. Spark算子--join

      join--Transformation类算子 代码示例 result  

  8. spark 算子之RDD

    map map(func) Return a new distributed dataset formed by passing each element of the source through ...

  9. Spark RDD Transformation 简单用例(二)

    aggregateByKey(zeroValue)(seqOp, combOp, [numTasks]) aggregateByKey(zeroValue)(seqOp, combOp, [numTa ...

随机推荐

  1. Transaction check error: file /etc/rpm/macros.ghc-srpm from install of redhat-rpm-config-9.1.0-80.el7.centos.noarch conflicts with file from package epel-release-6-8.noarch Error Summary ----------

    ./certbot-auto certonly 报错: Transaction check error:   file /etc/rpm/macros.ghc-srpm from install of ...

  2. TypeScript体系调研报告

    作者简介:aoto 蚂蚁金服·数据体验技术团队 Q:为什么要写这边文章?这篇文章要表达什么? A:我们考虑在SPA应用中使用TS作为开发语言,我们需要一篇系统性介绍TS本身及周边的文章来论证在项目中使 ...

  3. Eclipse 添加 lib (导入 .jar 包)

    1.将要添加的 jar 包直接拖到 WEB-INF/lib 目录里. 2.在项目上右键,依次选择[Build Path]--[Configure Build Path...]-- [Libraries ...

  4. sublime text 批量删除空白行

    CTRL+H打开replace功能,勾选上左侧的regular expression,并填写 find what栏 : \s+$  (正则表达式)replace with栏 : (这行留空) 接着点r ...

  5. jdbc增删改查进行封装

    jdbc封装 1 dao (代码分层) com.aaa.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 com.aaa.servlet 存放servle ...

  6. python 第一课 helloworld

    #!/usr/bin/env python #-*-coding:utf-8-*- #以上是配置编写环境的开始 #第一行env表示运行当前环境变量内的python版本(2.x or 3.x) #第二行 ...

  7. Mysql双主热备+LVS+Keepalived高可用部署实施手册

    MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...

  8. 金融量化分析【day110】:Pandas-DataFrame索引和切片

    一.实验文档准备 1.安装 tushare pip install tushare 2.启动ipython C:\Users\Administrator>ipython Python 3.7.0 ...

  9. ZooKeeper-配置 zoo.cfg

    官方说明:https://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html#sc_configuration # 通信心跳数,Zookeeper ...

  10. Web概述

    Web概述 1. JavaWeb 使用java开发的基于互联网的项目 2. 软件架构 C/S:客户端服务器架构 优点:用户体验好,很多数据在本地 缺点:安装.开发.部署.维护麻烦 B/S:浏览器服务器 ...