目录

一、Spark SQL介绍

SQL on Hadoop框架:

1)Spark SQL

2)Hive

3)Impala

4)Phoenix

Spark SQL是用来处理离线数据的,他的编程模型是DF/DS

Spark SQL的特点:

1)集成:可以和各种复杂SQL:spark.sql("")

2)统一的数据访问:连接Hive, Avro, Parquet, ORC, JSON, and JDBC外部数据源统一的方式:spark.read.format("").load("")

3)与Hive的集成:由于共享元数据库的存在,表、UDF都可以共享。impala、Hive、Spark SQL都是共享metastore元数据的

4)jdbc方式:需要启动服务,比如Hive的hiveserver2、mysql。

Spark的SQL框架:

1)Spark分支: Spark SQL

2)Hive:Hive on Spark

交互Spark SQL的方式:SQL、DF/DS

DataFrame 是1.3版本出来的,DataSet1.6出现的。

DataFrame=RDD+schema

DataFrame=Dataset[Row]

DF支持使用Scala, Java, Python, and R进行开发。但是DS只支持Scala and Java. Python暂时不支持,所以使用Python是有局限性的。

二、Spark和Hive的整合

只需要两步:

1)将Hive元数据的配置文件放到Spark/conf下:

cd $SPARK_HOME

cd conf

cp /home/hadoop/app/hive-1.1.0-cdh5.7.0/conf/hive-site.xml .(hive-site.xml中配置了元数据的连接)

2)在Spark中加入mysql的driver驱动包(因为Hive元数据是存储在MySQL上)。有多种方式添加jar包:

1)方式1:加在spark-shell或者spark-submit后:

启动的时候通过--jars加入,但是有的时候并不能传到driver端,所以还需要再使用--driver-class-path:

spark-shell \

--jars /home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar \

--driver-class-path /home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar

如果包多的时候使用--package。

2)方式2:cp包进SPARK_HOME/jars

3)方式3:把jar包配置在spark-default.conf下:

多包的时候使用:

spark.executor.extraClassPath=/home/hadoop/wzq_workspace/lib/*

spark.driver.extraClassPath=/home/hadoop/wzq_workspace/lib/*

单个包的时候使用(本人):

spark.executor.extraClassPath=/home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar

spark.driver.extraClassPath=/home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar

注意:

1)Hive底层是HDFS,一定要保证HDFS进程是开启的。

2)mysql的服务需要是开启的。

3)想要使用Spark整合Hive,在编译Spark的时候需要在编译指令中加入-Phive -Phive-thriftserver。

4)因为Spark配置中加入了hive-site.xml,所以默认的文件系统就是 HDFS。

否则就是本地文件系统,create table的时候就会在本地创建/user/hive/warehouse目录 。

SparkSession是Spark SQL程序的入口。在Spark Shell中SparkSession的别名是spark。

三、Spark的thriftserve2/beeline/jdbc

hive有hiveServer2,spark中也有类似的thriftserve2。

位置:spark/sbin

步骤:

1)将${HIVE_HOME}/conf/hive-site.xml 拷贝到${SPARK_HOME}/conf下。

2)添加mysql驱动。

启动thriftserver服务:

sbin$ ./start-thriftserver.sh --jars ~/software/XXX/mysql-connector-java-5.1.27-bin.jar

会提示日志文件的位置,通过`tail -f XX.log`可以查看这个server是否启动成功。

占用的端口是10000。

启动beeline客户端:

bin$ ./beeline -u jdbc:hive2://localhost:10000 -n hadoop   #通过过JDBC连接hive

jdbc:hive2://localhost:10000>  #成功连接

jdbc:hive2://localhost:10000>  show tables;

jdbc:hive2://localhost:10000> select * from emp;

注意:

要在`$SPARK_HOME/bin`下通过`./beeline`启动start-thriftserver.sh对应的客户端,否则启动启动成hive的客户端,因为环境变量中配置了`HIVE_HOME/bin`,也配置了`SPARK_HOME/bin` ,所以要明确位置进行使用。

开启server之后,也可以在windows上的IDEA中使用JDBC进行连接服务。同样不需要写用户名和密码。

观察Spark UI界面:

1)应用的名称是Thrift JDBC/ODBC Server

2)页面上多了一个JDBC/ODBC Server的页签,并且展示SQL的很多信息和SQL的执行计划。

四、shell方式使用SQL

实际上就是访问操作Hive表。

shell方式使用SQL有两种方式:

1)spark-shell进入:

scala> spark.sql("show databases").show(false)

scala> spark.sql("use hive")

scala> spark.sql("show tables").show(false)

scala> spark.sql("select * from test").show(false)

2)spark-sql进入:

bin$ ./spark-sql --jars

spark-sql(default)> show tables;

spark-sql(default)> select * from emp;

spark-sql (default)> show databases; #直接写SQL,用;符号结束

用exit;退出spark-sql

spark-sql 底层调用的也是spark-submit。

beeline执行sql文件_【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL...相关推荐

  1. 用JDBC直连方式访问SQL Server 2005详解

    用JDBC直连方式访问SQL Server 2005详解 1.安装JDK,配置其环境变量:(笔者所用版本为1.6版) (1)从官方网http://java.sun.com/jdk下载安装文件. (2) ...

  2. java执行sql文件_面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  3. java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  4. sqlplus 执行sql文件_详解sqlplus设定行大小、页大小、字符列格式、数字列格式、清屏...

    概述 sqlplus虽然是DBA们最为经常使用的Oracle客户端工具,但是它在输出结果格式化上不是很好,如折行.分页不好等,所以一般启动sqlplus后多少都要做些设置,如linesize.page ...

  5. pg数据库执行sql文件_在linux中Postgresql数据库如何执行脚本文件

    在linux中Postgresql数据库如何恢复数据库?执行sql脚本文件呢?具体步骤如下: 一.恢复数据库备份文件 1.将数据库备份文件xxx.backup用连接工具拷贝到/opt下,这个不固定,位 ...

  6. mysql客户端能运行sql文件_通过mysql客户端执行sql文件的方法

    选择要执行sql文件,点击"打开"按钮,如图 方法/步骤 点击"ok"按钮,如图: 下面是学习啦小编为大家整理的关于通过mysql客户端执行sql文件的方法,一 ...

  7. mysql workbench 执行sql文件_向mysql workbench中导入.sql文件

    mysql workbench用的不多,前段时间装了一下,然后用了一下,感觉操作比dbdesigner4要更人性化一点.其中二个方面做了改进,让我觉得很爽. 第一,就是端口可以修改了,以前就是定死33 ...

  8. mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)

    站在巨人的肩上 Standing On Shoulders Of Giants 部分转自:https://www.jianshu.com/p/294502893128 https://blog.csd ...

  9. 转储sql文件_在Linux上SQL Server中更改SQL转储文件位置

    转储sql文件 In this article, we will talk about SQL Dump files and the process to change the dump direct ...

最新文章

  1. 合肥师范学院计算机毕设选老师,计算机毕设被导师要求反复修改?
  2. html5 Canvas画图教程(5)—canvas里画曲线之arc方法
  3. springboot打包时加入本地jar打包
  4. oracle 48小时内_缺血性脑梗死后48小时内使用阿替普酶能够降低脑损伤程度
  5. POE供电交换机技术分析及工作过程详解
  6. raptor累乘流程图_Markdown快速上手指南
  7. 为什么代码正确却没有爬虫的信息_一位一年多工作经验的程序员问我,为什么545行代码没有执行到?...
  8. input file reader
  9. Pixazza把每张图片自动变成广告赚钱
  10. 浏览器输入网址回车发生的事情?--
  11. JIT 编译器 是什么
  12. 新东方的全套英语资料,相当权威版!!!
  13. hugo搭建个人博客
  14. Spark 3.0 - 6.ML 自定义 Transformer 踩坑大全
  15. pd.read_excel出现xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方案
  16. 小半斤拔凉 支付Java 相关参考
  17. SpringCloud( H版 alibaba )框架开发教程(中级)
  18. CentOS桌面安装
  19. Java API文档的使用详解
  20. Matlab 里 premnmx tramnmx postmnmx 分别表示什么

热门文章

  1. 引入对抗训练的对比学习
  2. Embedding 技术在推荐系统中的应用实践
  3. php中 s=,PHP错误表中的所有值=’s’
  4. 修改个人信息 python_python函数练习——个人信息修改
  5. sklearn学习 5.降维算法PCA和SVD
  6. 那些年让我们头疼的CSS3动画
  7. java连接数据库 oracle,Oracle数据库之一分钟教你学会用java连接Oracle数据库
  8. mysql找不到sys_解决方法:①MySQL 闪退 ②服务列表里找不到MySQL ③MySQL服务无法启动...
  9. Navicat安装(图文教程)
  10. [ExtJS 6]Grid分页工具栏无效问题解决