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

目录

一、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。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值