如果需要使用 spark sql 功能,则需要在编译spark 包的时候加上 -Phive

这里是为了使用 hive 的 语法解析和 metastore 功能

spark-env.sh 中添加, (如果有必要就添加上, 主要是 CLASSPATH 和 SPARK_CLASSPATH )

export JAVA_HOME=/usr/lib/jvm/default-java 
export SCALA_HOME=/usr/local/scala 
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop 
export HIVE_CONF_DIR=/usr/local/hive/conf 
export CLASSPATH=$CLASSPATH:/usr/local/hive/lib 
export SPARK_CLASSPATH=$SPARK_HOME/jars/*:$HIVE_HOME/lib/*

在spark 节点上创建 hive-site.xml 填入 hive 的相关配置信息

# optional, spark 和 hive之间通过 hive 的 metastore 服务器进行通信
set hive.metastore.uris=thrift://master:9083

执行以下命令启动 metastore , 作为单独一个服务, 这里spark 是只使用 hive 的 metastore 和 语法树 去读写表数据。

hive --service metastore -p <port_num> & # 如果不指定端口则默认端口为 9083

启动 bin/pyspark 执行以下命令

from pyspark.sql import HiveContext
hive_context = HiveContext(sc) # 内置了 sc (spark connection)对象
hive_context.sql('use default')
hive_context.sql('show tables').show() # 需要手动调用show 才能查看数据
hive_context.sql("select * from original_report_voice limit 1").show()

如果正常返回则说明配置成功