【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL

目录

一、Spark SQL介绍

二、Spark和Hive的整合

三、Spark的thriftserve2/beeline/jdbc

四、shell方式使用SQL

一、Spark SQL介绍

官网:http://spark.apache.org/sql/

学习文档:http://spark.apache.org/docs/latest/sql-programming-guide.html

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。

原文地址:https://www.cnblogs.com/huomei/p/12093999.html

时间: 2024-08-06 22:55:59

【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL的相关文章

大数据学习系列之五 ----- Hive整合HBase图文详解

引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环境,并进行了相应的测试.本文主要讲的是如何将Hive和HBase进行整合. Hive和HBase的通信意图 Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-*.jar工具类来实现,通信原理如下图

关于hive on spark会话的共享状态

spark sql中有一个类: org.apache.spark.sql.internal.SharedState 它是用来做: 1.元数据地址管理(warehousePath) 2.查询结果缓存管理(cacheManager) 3.程序中的执行状态和metrics的监控(statusStore) 4.默认元数据库的目录管理(externalCatalog) 5.全局视图管理(主要是防止元数据库中存在重复)(globalTempViewManager) 1:首先介绍元数据地址管理(warehou

伪分布式Spark + Hive on Spark搭建

Spark大数据平台有使用一段时间了,但大部分都是用于实验而搭建起来用的,搭建过Spark完全分布式,也搭建过用于测试的伪分布式.现在是写一遍随笔,记录一下曾经搭建过的环境,免得以后自己忘记了.也给和初学者以及曾经挖过坑的人用作参考. Hive on Spark是Hive跑在Spark上,用的是Spark执行引擎,而不是默认的MapReduce. 可以查阅官网的资源Hive on Spark: Getting Started. 一 .安装基础环境 1.1 Java1.8环境搭建 1) 下载jdk

Apache Spark源码走读之12 -- Hive on Spark运行环境搭建

欢迎转载,转载请注明出处,徽沪一郎. 楔子 Hive是基于Hadoop的开源数据仓库工具,提供了类似于SQL的HiveQL语言,使得上层的数据分析人员不用知道太多MapReduce的知识就能对存储于Hdfs中的海量数据进行分析.由于这一特性而收到广泛的欢迎. Hive的整体框架中有一个重要的模块是执行模块,这一部分是用Hadoop中MapReduce计算框架来实现,因而在处理速度上不是非常令人满意.由于Spark出色的处理速度,有人已经成功将HiveQL的执行利用Spark来运行,这就是已经非常

Hive on Spark

Hive On Spark 一.概述 Hive 是一种数据仓库,即是一种sql翻译器,hive可以将sql翻译成mapreduce程序在hadoop中去执行,默认支持原生的Mapreduce引擎.从hive1.1版本以后开始支持Spark.可以将sql翻译成RDD在spark里面执行.Hive支持的spark是那种spark-without-hive,即没有编译支持hive包的spark. 二.安装版本及软件 需要安装:scala-2.12.jdk1.8.hive-2.1.1.spark-1.6

hive on Spark部署

一.环境 1.zk集群 10.10.103.144:2181,10.10.103.246:2181,10.10.103.62:2181 2.metastore数据库 10.10.103.246:3306 二.安装 1.安装配置数据库 yum -y install mysql55-server mysql55 GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost' IDENTIFIED BY 'hive'; GRANT ALL PRIVI

Hive整合HBase——通过Hive读/写 HBase中的表

写在前面一: 本文将Hive与HBase整合在一起,使Hive可以读取HBase中的数据,让Hadoop生态系统中最为常用的两大框架互相结合,相得益彰. 写在前面二: 使用软件说明 约定所有软件的存放目录: /home/yujianxin 一.Hive整合HBase原理 Hive与HBase整合的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler-0.9.0.jar工具类,如下图 Hive与HBase通信示意图 二.具体步骤 安装前说明 1.关

关于hive和spark日志问题

在用控制台学习hive和spark的时候,总是打印出来的各种日志烦得不行(对我而言).所以就想把着写我不关心的信息屏蔽掉,只保留错误信息.其实输出的日志信息还是很有用的,因为里面的日志信息可以清楚的描述任务执行的过程和细节.对hive和spark基本运行原理有了了解之后,我觉得完全可以屏蔽掉这些信息. 于是寻找教程,搞了一把.主要就是修改log4j.properties这个文件 没处理之前是这个样子的: 处理之后是这个样子的: 具体的怎么设置,看下面的博文吧,很详细. http://blog.c

hive on spark 编译

前置条件说明 Hive on Spark是Hive跑在Spark上,用的是Spark执行引擎,而不是MapReduce,和Hive on Tez的道理一样. 从Hive 1.1版本开始,Hive on Spark已经成为Hive代码的一部分了,并且在spark分支上面,可以看这里https://github.com/apache/hive/tree/spark,并会定期的移到master分支上面去. 关于Hive on Spark的讨论和进度,可以看这里https://issues.apache