设置metastore 机器: ke01、ke02、ke03、ke04 ke03 为元数据库 ke01、ke02、ke04 连接到元数据库 、 Hive-metastore搭建 ke03: hiv
设置metastore
机器: ke01、ke02、ke03、ke04
Hive-metastore搭建
ke03:
hive.metastore.warehouse.dir
/user/hive/warehouse
javax.jdo.option.ConnectionURL
jdbc:Mysql://ke01:3306/hive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassWord
aa123456
hive.metastore.schema.verification
false
datanucleus.schema.autoCreateAll
true
ke01.02.04:
hive.metastore.uris
thrift://ke03:9083
启动
ke03:
hive --help // 技巧
hive --service --help //技巧
启动
hive --service metastore
ke04: hive = hive --service cli 连接hive
// CLI指的是 command-line interface
测试:
create table test01( name string );
原理: ke04 通过command-line interface 将sql写进去,动用元数据,将建表语句通知ke03:metastore 最终存入mysql
mysql -> hive.TBL 有刚创建的表:test01
启动可能遇到的异常
MetaException(message:Version infORMation not found in metastore. )
配置:
hive.metastore.schema.verification
false
datanucleus.schema.autoCreateAll
true
一般公司可能禁止使用命令行方式直接操作hive,使用hiveservice2, 只要能和ke03这台机器tcp通信,hiveservice2就可以连接
ke02: hive --service hiveserver2
beeline
!connect jdbc:hive2://ke02:10000
root 密码随机
测试: show databases
总结:
连接hive方式
1. hive --service cli 需要本地配置hive.metastore.uris
2. beeline !connect jdbc:hive2://ke02:10000 只要能和hiveserver2通讯即可
spark连接 hive-metastore 配置:
.config("hive.metastore.uris", "thrift://ke03:9083")
val session = SparkSession.builder()
.master("local")
.appName("spark on hive")
.config("hive.metastore.uris", "thrift://ke03:9083")
.enableHiveSupport() // 开启hive支持
.getOrCreate()
val sc = session.sparkContext
sc.setLogLevel("ERROR")
session.catalog.listTables().show()
val dataFrame = session.sql("show tables ")
dataFrame.show()
// session.sql("create table test02(id int)")
// 数据存入hdfs,配置文件需要加入HDFS地址,resources目录下加入core-site.xml hdfs-site.xml
session.sql("insert into test02 values (3),(4),(5)")
import session.implicits._
val df = List(
"小柯",
"张三",
"lisi").toDF("name")
df.createTempView("test03")
session.catalog.listTables().show()
session.sql("show tables ").show()
// test03写入到了hdfs中,临时表变成了持久表
df.write.saveAsTable("test03")
注意
表test03写入到了HDFS:
spark-sql-04-on_hive
原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14521231.html
--结束END--
本文标题: spark-sql-04-on_hive
本文链接: https://lsjlt.com/news/8135.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0