1.1 为什么要集成Hive?
因为在Linux中的Spark安装包,默认是不能直接读取hive的表的,需要集成hive才能读取hive的库和表。
1.2 怎么做?
1、先配置hive环境变量,打开 vim /etc/profile,然后添加两行代码:
export HIVE_HOME=/export/server/hive export PATH=$HIVE_HOME/bin:$PATH2、然后启动hive的metastore
nohup hive --service metastore 2>&1 > /tmp/hive-metastore.log &3、将metastore的进程端口号告诉给Spark,在spark/conf/的hive-site.xml文件中(可以从hive/conf/hive-site.xml文件拷贝过来即可),里面需包括以下的内容:
hive.metastore.warehouse.dir
/user/hive/warehouse
hive.metastore.uris
thrift://node1:9083
4、将mysql的驱动jar包拷贝到spark/jars目录中
5、将hive-site.xml分发到另外的机器上。
cd /export/server/spark/conf scp ./hive-site.xml node2://$PWD scp ./hive-site.xml node3://$PWD
6、如何验证?
进入spark-sql界面
show databases; --查询的是hive的数据库 use default; show tables;--展示hive的default库下的所有表。进入pyspark会话
spark.sql('show databases;').show() 如果查询的数据没有表头字段名,则在hive-site.xml中补充一句 hive.cli.print.header true
2、在Pycharm中集成Hive
1、在SparkSession中写上3句话
.config('hive.metastore.uris', 'thrift://node1.itcast.cn:9083')
.config('hive.metastore.warehouse.dir', '/user/hive/warehouse')
.enableHiveSupport() 2、测试代码 from pyspark.sql import SparkSession
if __name__ == '__main__':
# 1-创建上下文对象
spark = SparkSession.builder
.appName('test')
.master('local[*]')
.config('spark.sql.shuffle.partitions', '6')
.config('hive.metastore.uris', 'thrift://node1.itcast.cn:9083')
.config('hive.metastore.warehouse.dir', '/user/hive/warehouse')
.enableHiveSupport()
.getOrCreate()
spark.sql('show databases').show()
spark.sql('use test_db').show()
spark.sql('select count(1) from t_log_clean').show() 


