一 内嵌的 HIVE
如果使用 Spark 内嵌的 Hive, 则什么都不用做, 直接使用即可 Hive 的元数据存储在derby中, 默认仓库地址 : $SPARK_HOME/spark-warehouse
创建表
scala> spark.sql("show tables").show
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
+--------+---------+-----------+
scala> spark.sql("create table aa(id int)")
scala> spark.sql("show tables").show
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
| default| aa| false|
+--------+---------+-----------+
向表加载本地数据
scala> spark.sql("load data local inpath 'input/ids.txt' into table aa")
scala> spark.sql("select * from aa").show
+---+
| id|
+---+
| 1|
| 2|
| 3|
二 外部的 HIVE
配置
如果想连接外部已经部署好的 Hive,需要通过以下几个步骤:
➢ Spark 要接管 Hive 需要把 hive-site.xml 拷贝到 conf/目录下
➢ 把 Mysql 的驱动 copy 到jars/目录下
➢ 如果访问不到 hdfs,则需要把 core-site.xml 和 hdfs-site.xml 拷贝到 conf/目录下
➢ 重启 spark-shell
scala> spark.sql("show tables").show
20/04/25 22:05:14 WARN ObjectStore: Failed to get database global_temp,
returning NoSuchObjectException
+--------+--------------------+-----------+
|database| tableName|isTemporary|
+--------+--------------------+-----------+
| default| emp| false|
| default|hive_hbase_emp_table| false|
| default| relevance_hbase_emp| false|
| default| staff_hive| false|
| default| ttt| false|
| default| user_visit_action| false|
+--------+--------------------+-----------+
运行 Spark beeline
启动 Thrift Server
[root@hadoop1 spark-3.0.0]# sbin/start-thriftserver.sh
使用 beeline 连接 Thrift Server
[root@hadoop1 spark-3.0.0]# bin/beeline -u jdbc:hive2://hadoop1:10000 -n root
Connecting to jdbc:hive2://hadoop1:10000
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 2.3.7 by Apache Hive
使用
0: jdbc:hive2://hadoop1:10000> show tables;
+-----------+------------+--------------+
| database | tableName | isTemporary |
+-----------+------------+--------------+
+-----------+------------+--------------+
No rows selected (0.299 seconds)
0: jdbc:hive2://hadoop1:10000> create database yang;