1.1 为什么要集成Hive?
因为在Linux中的Spark安装包,默认是不能直接读取hive的表的,需要集成hive才能读取hive的库和表。
1.2 怎么做?
1、先配置hive环境变量,打开 vim /etc/profile,然后添加两行代码:
export HIVE_HOME=/export/server/hiveexport PATH=$HIVE_HOME/bin:$PATH
2、然后启动hive的metastorenohup hive --service metastore 2>&1 > /tmp/hive-metastore.log &
3、将metastore的进程端口号告诉给Spark,在spark/conf/的hive-site.xml文件中(可以从hive/conf/hive-site.xml文件拷贝过来即可),里面需包括以下的内容:
4、将mysql的驱动jar包拷贝到spark/jars目录中
5、将hive-site.xml分发到另外的机器上。
cd /export/server/spark/confscp ./hive-site.xml node2://$PWDscp ./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中补充一句
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 SparkSessionif __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()