[安装]SparkSQL安装(1.3.1) 2015-08-04 19:00

简介

SparkSQL的使用方法:

  1. 通过SparkSQL的API(DataFrame等)接口开发应用程序,使用spark-shell或spark-submit提交应用程序进行SQL操作
  2. 通过ThriftServer,使用beeline连接ThriftServer进行命令行操作

本文档介绍方法2。

注意:

ThriftServer的实现借鉴了Hive的代码,所以出现了很多Hive相关的名称(比如配置文件是hive-site.xml等)。但ThriftServer实际上不依赖于Hive。

部署图

安装

在Spark的conf目录下创建hive-site.xml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<configuration> 
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://ctrl:3306/SparkSQL?createDatabaseIfNotExist=true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>sparksql</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>sparksql</value>
  </property>
</configuration>

在MySQL中创建SparkSQL元数据存储的数据库:

1
2
3
4
5
CREATE DATABASE IF NOT EXISTS SparkSQL DEFAULT CHARSET latin1;
CREATE USER sparksql IDENTIFIED BY 'sparksql';
/* 第一个sqoop是数据库名,第二个sqoop是用户名 */
GRANT ALL PRIVILEGES ON SparkSQL.* TO 'sparksql'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

注意: SparkSQL的数据库要采用Latin1字符集,否则会出现如下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

启动

启动ThriftServer(ODBC/JDBC Server):

CLASSPATH=$CLASSPATH:/opt/spark/lib/mysql-connector-java-5.1.22-bin.jar /opt/spark/sbin/start-thriftserver.sh \
  --hiveconf hive.server2.thrift.port=20000 \
  --hiveconf hive.server2.thrift.bind.host=192.168.1.10 \
  --master yarn --deploy-mode client

注意:

  1. ThriftServer访问MySQL需要相关JDBC驱动,需要将驱动放入CLASSPATH中。
  2. 启动ThriftServer绑定的IP是192.168.1.10,所以不能使用127.0.0.1连接。

使用

使用Spark自带的beeline连接:

[root@ctrl spark]# bin/beeline
Spark assembly has been built with Hive, including Datanucleus jars on classpath
Beeline version ??? by Apache Hive
beeline> !connect jdbc:hive2://192.168.1.10:20000
scan complete in 3ms
Connecting to jdbc:hive2://192.168.1.10:20000
Enter username for jdbc:hive2://192.168.1.10:20000: root
Enter password for jdbc:hive2://192.168.1.10:20000:
Connected to: Spark SQL (version 1.2.1)
Driver: null (version null)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://192.168.1.10:20000>
Tags: #Spark #SparkSQL    Post on Hadoop