场景:

有两个表,表可以是文本或Json数据,结构化后分别是Table1(A,B,C)和Table2(C、D、E),两个表通过C关联,要求求出D+E之和,并以(A、B、D+E)三列返回

解答:

思路:SparkSQL支持读取Json创建表,同时创建的表可以做联合查询,类似传统Sql语句进行关联查询和统计分析

代码:

package studyimport org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSessionobject TestDataFrame2{def main(args:Array[String]):Unit={import org.apache.spark.sql.SparkSessionval spark = SparkSession.builder().master("local[*]").appName("Spark SQL basic example").config("spark.some.config.option", "some-value").getOrCreate()spark.sql("""create table table1 using org.apache.spark.sql.json options(path "F://0002_BigData//Soft//comoceanspark//src//resources//Table1.json")""")
spark.sql("""create table table2 using org.apache.spark.sql.json options(path "F://0002_BigData//Soft//comoceanspark//src//resources//Table2.json")""")
spark.sql("show tables").show()spark.sql("select A,B,(D+E) as DE from table1 inner join table2 on table1.C = table2.C order by DE desc limit 5").show()}
}

Table1.json:

{"A":"A1", "B":30, "C":1}
{"A":"A2", "B":31, "C":2}
{"A":"A3", "B":32, "C":3}
{"A":"A4", "B":33, "C":4}
{"A":"A5", "B":34, "C":5}
{"A":"A6", "B":35, "C":6}
{"A":"A7", "B":36, "C":7}
{"A":"A8", "B":37, "C":8}
{"A":"A9", "B":38, "C":9}

Table2.json:

{"C":1, "D":1, "E":1}
{"C":2, "D":2, "E":2}
{"C":3, "D":3, "E":3}
{"C":4, "D":4, "E":4}
{"C":5, "D":5, "E":5}
{"C":6, "D":6, "E":6}
{"C":7, "D":7, "E":7}
{"C":8, "D":8, "E":8}
{"C":9, "D":9, "E":9}

结果:

表显示

计算结果显示:

转载于:https://www.cnblogs.com/defineconst/p/11553271.html

【大数据】0001---使用SparkSQL关联两个表求和取前几行相关推荐

  1. 大数据之路读书笔记-11事实表设计

    大数据之路读书笔记-11事实表设计 文章目录 大数据之路读书笔记-11事实表设计 11.1 事实表基础 11.1.1 事实表特性 11.1.2 事实表设计原则 11.1.3 事实表设计方法 11.2 ...

  2. 大数据原始数据从那些途径获取?200个国内外经济金融行研咨询数据网站大全...

    大数据原始数据从那些途径获取?200个国内外经济金融行研咨询数据网站大全 大数据资料搜集是个相当繁琐与累的工作,也是投资入门的基本,良好的信息资料搜集能力有利于我们快速了解投资主体的基本情况,为后续的 ...

  3. **龙战于野大数据MR原理启动hive查询表分区,表结构,完整流程*

    龙战于野大数据MR原理启动hive查询表分区,表结构,完整流程** 如果使用的是mr(原生mapreduce) SET mapreduce.job.queuename=etl;显示表分区: 查看分区 ...

  4. 大数据技术之SparkSQL(超级详细)

    第1章 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQ ...

  5. 【大数据开发】SparkSQL——RDD、DataFrame、DataSet相互转换、DSL常用方法、SQL风格语法、Spark读写操作、获取Column对象的方式

    take,takeAsList是Action操作 limit⽅法获取指定DataFrame的前n⾏记录,得到⼀个新的DataFrame对象.和take与head不同的是,limit⽅法不是Action ...

  6. 大数据与数据分析的关联,主要应用在哪些领域?

    3G时代的文字和图片.4G时代的图片与视频.5G时代的短视频和直播,多样化信息给人们日常生活带来的,除了精神上的愉悦和感官上的刺激之外,也带来了数据的疯狂增长. 从2009年"大数据&quo ...

  7. powerdesigner 怎么关联两张表_【PL/SQL数据库】 三种关联机制 - 执行计划

    看完这章你会学习到以下内容: 1. 三种关联分别是什么? 2. 什么时候那个适合用哪个?(总结) 一共有三种关联机制: Nest Loop 嵌套循环 (大小表) Sort Merge 排序合并 (添加 ...

  8. 大数据项目开发hadoop集群搭建 python爬取前程无忧招聘网信息以及进行数据分析和数据可视化

    大数据项目开发实训报告 一.Hadoop环境搭建 1: jdk的安装 1):在linux系统下的opt目录下创建software 和 module 两个目录 2):利用filezilla工具将 jdk ...

  9. 大数据学习笔记35:Hive - 内部表与外部表

    文章目录 一.内部表 1.什么是内部表 2.创建与操作内部表 (1)创建park数据库 (2)在park数据库里创建student表 (3)在student表插入一条记录 (4)通过HDFS Expl ...

最新文章

  1. R语言ggplot2可视化:可视化分组的小提琴图(violin plot)并在分组小提琴内部嵌入箱图(box plot)
  2. 【毕设进行时-工业大数据,数据挖掘】Java GUI完善,左对齐
  3. anaconda安装tensorflow gpu_安装Tensorflow-gpu的来龙去脉
  4. 【uniapp】3d轮播图/堆叠轮播图/层叠轮播图
  5. Redis操作Hash相关API
  6. 关于 epoch、 iteration和batchsize的区别
  7. java中的gui_java gui快速入门教程
  8. “约见”面试官系列之常见面试题之第七十七篇之vuex中mutation和action的详细区别 (建议收藏)
  9. 小白学JAVA,与你们感同身受,JAVA---day5:关于多态的理解和分析。鲁迅的一句话:总之岁月漫长,然而值得等待。
  10. windows进入mysql
  11. C# 对垒 VB.NET C#不行了?
  12. web视图层:JSP
  13. 一步一步学Silverlight 2系列(8):使用样式封装控件观感
  14. Unity面试题精选(4)
  15. Django实战1-权限管理功能实现-10:用户管理
  16. Cleaning Bad Data in R R语言数据清理教程 Lynda课程中文字幕
  17. 西南科技大学 SWUST OJ系统942: 逆置顺序表
  18. 采用Turbo编码的图像传输试验(AWAG信道,matlab实现)分别验证了不同交织器类型,交织深度对turbo码性能的影响
  19. python tts 离线 linux_ubuntu16.04安装科大讯飞Linux SDK实现离线语音合成(TTS)
  20. android 智能电视 电视盒子 安卓嵌入式硬件LAN压力测试

热门文章

  1. 大数据分析五步法流程顺序
  2. 新答尔科撒顿工业机器人_工业机器人谐波轴承使用寿命是多长?国产迎来新突破,大大延长...
  3. php cms 公众号,thinkwechat
  4. java url类下载_Java根据url下载图片或文件的工具类-Fun言
  5. python能处理图片吗_python的Image和skimage处理图片
  6. python密码编程_Python密码学编程
  7. c 语言与数据库技术基础教程答案,2016计算机三级《数据库技术》备考习题与答案...
  8. Python爬虫之(五)Cookie和URLError
  9. Python爬虫之(四)urllib库的高级用法
  10. JAVA的包装类 【转】