sparkSQL使用

来源:互联网 发布:成都网络推广 编辑:程序博客网 时间:2024/06/06 14:03

今天直接了解它的使用:

SparkSQL CLI

CLI(Command-Line Interface,命令行界面)是指可在用户提示符下键入可执行指令的界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后予以执行。Spark CLI指的是使用命令界面直接输入SQL命令,然后发送到Spark集群进行执行,在界面中显示运行过程和最终的结果。
Spark1.1相较于Spark1.0最大的差别就在于Spark1.1增加了Spark SQL CLI和ThriftServer,使得Hive用户还有用惯了命令行的RDBMS数据库管理员较容易地上手,真正意义上进入了SQL时代。


在运行Spark SQL CLI中需要使用到Hive Metastore,故需要在Spark中添加其uris。具体方法是在SPARK_HOME/conf目录下创建hive-site.xml文件,然后在该配置文件中,添加hive.metastore.uris属性

首先在$SPARK_HOME/conf中创建一个hive-site.xml文件

<configuration>    <property>    <name>hive.metastore.uris</name>    <value>thrift://hadoop1:9083</value>    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>  </property></configuration>

启动hive的metastore

hive –service metastore &

启动SparkSQL CLI

我们默认hadoop,yarn,spark集群都是启动的

spark-sql –master spark://spark02:7077 –executor-memory 1g

这时就可以使用HQL语句对Hive数据进行查询,另外可以使用COMMAND,如使用set进行设置参数:默认情况下,SparkSQL Shuffle的时候是200个partition,可以使用如下命令修改该参数:

SET spark.sql.shuffle.partitions=20;

就可以像使用hive cli命令行使用sparkSQL:
如:show databases;show tables;user databaseName等等

Spark Thrift Server

hriftServer是一个JDBC/ODBC接口,用户可以通过JDBC/ODBC连接ThriftServer来访问SparkSQL的数据。ThriftServer在启动的时候,会启动了一个SparkSQL的应用程序,而通过JDBC/ODBC连接进来的客户端共同分享这个SparkSQL应用程序的资源,也就是说不同的用户之间可以共享数据;ThriftServer启动时还开启一个侦听器,等待JDBC客户端的连接和提交查询。所以,在配置ThriftServer的时候,至少要配置ThriftServer的主机名和端口,如果要使用Hive数据的话,还要提供Hive Metastore的uris

首相在我们刚刚新建的hive-site.xml中添加:

 <property>    <name>hive.server2.thrift.min.worker.threads</name>    <value>5</value>    <description>Minimum number of Thrift worker threads</description>  </property>  <property>    <name>hive.server2.thrift.max.worker.threads</name>    <value>500</value>    <description>Maximum number of Thrift worker threads</description>  </property>  <property>    <name>hive.server2.thrift.port</name>    <value>10000</value>    <description>Port number of HiveServer2 Thrift interface. Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description>  </property>  <property>    <name>hive.server2.thrift.bind.host</name>    <value>spark02</value>    <description>Bind host on which to run the HiveServer2 Thrift interface.Can be overridden by setting$HIVE_SERVER2_THRIFT_BIND_HOST</description>  </property>

重新启动master和hive 的metastore
hive –service metastore &

启动ThriftServer
start-thriftserver.sh –master spark://spark02:7077 –executor-memory 1g

使用客户端连接:

$SPARK_HOME/bin/beeline 回车
输入
!connect jdbc:hive2://spark02:10000 (连接ThriftServer) 回车
因为我的用户名为spark,我就输入spark,没有密码
这里写图片描述

就可以像使用hive cli命令行使用sparkSQL:
创建一张表:
create table testThrift (name String,age int);
insert into testThrift values(“tom”,20);
insert into testThrift values(“Jim”,30);

如:show databases;show tables;user databaseName等等


在IDEA中JDBC访问

import java.sql.DriverManagerobject SparkSQL_Thrift_test {  def main(args:Array[String]): Unit ={    Class.forName("org.apache.hive.jdbc.HiveDriver")    val url = "jdbc:hive2://spark02:10000/defalut"    val conn = DriverManager.getConnection(url,"spark","")    try{      val statement = conn.createStatement()      val rs = statement.executeQuery("select name,age from testthrift")      println(rs)      while(rs.next()){//        println("table_name=%s".format(rs.getString(1)))//        println("111111)")        println("rowid:=%s,year=%s".format(rs.getString("name"),rs.getInt("age")))      }    }catch{      case e:Exception => e.printStackTrace()    }
原创粉丝点击