如果需要使用 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()
如果正常返回则说明配置成功