文章目录
- 1.理论
- 2.配置和启动
- 3.连接
- 4.执行
1.理论
Hive通过Metastore存储元数据
- 元数据包含用Hive创建的database、tabel等的元信息。
- 客户端连接Metastore服务,Metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。
元数据存储在关系型数据库中。如Derby、MySQL等。metastore有三种配置方式:
- Embedded Metastore Database (Derby) 内嵌模式
- Local Metastore Server 本地元存储
- Remote Metastore Server 远程元存储
Derby是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境。本地元存储和远程元存储都采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server.在这里我们使用MySQL。
区别:
- 本地元存储和远程元存储的区别是:本地元存储不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。 (本地还是要起一下?可以不起尝试一下)
- 远程元存储需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程元存储的metastore服务和hive运行在不同的进程里。
- metastore所在的服务器配置文件应该加上连接mysql元数据库的配置。
2.配置和启动
1.拷贝mysql-connector-java-5.1.38-bin.jar
包(Java调用mysql支持)到你spark的jars路径下
2.因为使用ThriftJDBC/ODBC Server访问spark SQL,所以要修改hive-site.xml文件
3.将Hive的配置文件hive-site.xml
拷贝到${spark_home}/conf
目录下
4.启动hivede metastroe后台进程。hive --service metastore
启动hive的service metastore后台进程。
5.启动hive server web查看hive情况hive --service hiveserver2
,端口为10002
6.启动spark-shell访问hive上数据。执行./spark-shell --master spark://master:7077 (可添加其他参数rg:–jars等参数)
3.连接
Spark连接Hive可以通过两种方式spark.sql("")
和HiveContext(sc).sql("")
,关于这两种方式 这里 有比较详细的介绍。
1.启动交互式spark spark-shell --master yarn
,可以选择多种集群模式,这里我在yarn集群管理器上运行。
2.导入HiveContext
4.执行
执行语句hiveContext.sql("select * from database_name.table_name").show
参考
Hive安装配置指北(含Hive Metastore详解)Spark访问Hive表
Spark 连接hive 元数据库(mysql)
spark连接hive(spark-shell和eclipse两种方式)