一 内嵌的 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").show20/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 rootConnecting to jdbc:hive2://hadoop1:10000Transaction isolation: TRANSACTION_REPEATABLE_READBeeline 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;
