前言:
记录笔记一手
Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到Hadoop的分布式文件系统上,并提供类SQL查询的功能。以下是Hive的一些基本概念:
- 数据库(Database)
- Hive中的数据库类似于关系型数据库中的数据库,用于存储表和其他元数据。每个数据库都有一个唯一的名称,可以通过USE语句来切换数据库。
- 表(Table)
- Hive中的表类似于关系型数据库中的表,用于存储数据。每个表都有一个唯一的名称和一组列定义,可以通过CREATE TABLE语句来创建表。
- 分区(Partition)
- Hive中的分区是指将表按照某个列的值进行划分,每个分区对应一个子目录,用于存储该分区的数据。分区可以提高查询效率,可以通过ALTER TABLE语句来添加、删除和修改分区。
- 存储格式(Storage Format)
- Hive中的存储格式指数据在Hadoop分布式文件系统上的存储方式,常见的存储格式包括文本格式、序列化格式、列式存储格式等。可以通过CREATE TABLE语句的STORED AS子句来指定存储格式。
- 数据类型(Data Type)
- Hive中支持的数据类型包括基本数据类型、复合数据类型和集合数据类型等。常见的数据类型包括INT、BIGINT、STRING、BOOLEAN、ARRAY、MAP等。
- 查询语句(Query)
- Hive中的查询语句类似于SQL语句,可以使用SELECT、FROM、WHERE、GROUP BY、ORDER BY等关键字进行查询。Hive支持类SQL查询语句的语法,但是与SQL语言有一些差异,例如Hive中不支持UPDATE和DELETE语句。
Hive的一些基本概念:
Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到Hadoop的分布式文件系统上,并提供类SQL查询的功能。以下是Hive的一些基本概念:
数据库(Database)
- Hive中的数据库类似于关系型数据库中的数据库,用于存储表和其他元数据。每个数据库都有一个唯一的名称,可以通过USE语句来切换数据库。Hive中的数据库并不是物理上的存储结构,而是一种逻辑上的组织方式。在Hive中,每个数据库都对应一个目录,该目录下存储了该数据库中的所有表和其他元数据。
服务器创建hive数据库指令:
在Hive中,可以通过CREATE DATABASE语句来创建数据库,例如:
CREATE DATABASE mydb;
在创建数据库时,可以指定数据库的名称和数据库的位置,例如:
CREATE DATABASE mydb LOCATION '/user/hive/mydb';
在Hive中,可以通过SHOW DATABASES语句来查看所有的数据库,例如:
SHOW DATABASES;
在Hive中,可以通过USE语句来切换数据库,例如:
USE mydb;
在切换数据库后,可以通过SHOW TABLES语句来查看该数据库中的所有表,例如:
SHOW TABLES;
DROP DATABASE mydb; 删除数据库;,删除数据库时会同时删除该数据库中的所有表和其他元数据,因此需要谨慎操作。
Spring Boot中集成Hive数据库
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.2</version>
</dependency>
在application.properties或application.yml文件中配置Hive JDBC连接属性,例如:
spring.datasource.url=jdbc:hive2://localhost:10000/default
spring.datasource.driver-class-name=org.apache.hive.jdbc.HiveDriver
spring.datasource.username=username
spring.datasource.password=password
在application.properties或application.yml文件中配置MyBatis属性,例如:
mybatis.mapper-locations=classpath:mapper/*.xml
其中,mapper-locations是MyBatis映射文件的路径。
创建Mapper接口和映射文件,例如:
public interface MyMapper { @Select("SELECT * FROM mytable") List<MyEntity> findAll(); } <mapper namespace="com.example.mapper.MyMapper"> <resultMap id="MyEntityMap" type="com.example.entity.MyEntity"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="age" property="age"/> </resultMap> <select id="findAll" resultMap="MyEntityMap"> SELECT * FROM mytable </select> </mapper>
MyMapper接口定义了一个findAll()方法,使用@Select注解指定SQL查询语句。映射文件中定义了一个resultMap和一个select标签,用于将查询结果映射到MyEntity实体类中。
在Spring Boot的配置类中,使用@MapperScan注解注册Mapper接口,然后调用对应方法 例如:
@Configuration @MapperScan("com.example.mapper") public class MyConfig { } @Autowired private MyMapper myMapper; public void queryHive() { List<MyEntity> result = myMapper.findAll(); // 处理查询结果 }
使用@Autowired注解注入MyMapper接口,然后使用myMapper.findAll()方法执行SQL查询语句,最后使用List类型的result变量来保存查询结果。
需要注意的是,Hive的JDBC驱动与其他关系型数据库的JDBC驱动有一些差异,例如Hive不支持事务和索引等特性
Hive数据库在服务器配置事项:
用MySQL来存储Hive元数据时,需要进行以下配置
- 安装MySQL
- 创建Hive元数据数据库
- 首先需要安装MySQL数据库,可以从MySQL官网下载安装包,也可以使用Linux发行版自带的MySQL软件包。
在MySQL中创建一个数据库,用于存储Hive的元数据,例如:
CREATE DATABASE metastore;
在MySQL中创建一个用户,用于访问Hive元数据数据库,例如:
CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword';
在上述MySQL语句中,'hiveuser'是要创建的MySQL用户的用户名,'localhost'表示该用户只能从本地主机访问MySQL数据库,IDENTIFIED BY 'hivepassword'表示该用户的密码为hivepassword。
需要注意的是,创建MySQL用户和授权访问权限的操作需要具有MySQL的管理员权限,因此需要使用具有管理员权限的MySQL用户来执行这些操作。
将Hive元数据数据库的访问权限授予Hive元数据用户,例如:
GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'localhost';
配置Hive-site.xml文件:
在Hive的conf目录下,有一个hive-default.xml.template文件,将其复制一份并重命名为hive-site.xml,然后根据需要进行配置。需要注意的是,hive-site.xml文件中的配置项会覆盖hive-default.xml.template文件中的默认配置项。
- 仅在hive-site.xml文件中配置需要修改的属性,不要修改其他属性。这样可以避免不必要的冲突。
- 在hive-site.xml文件中,使用标签覆盖hive-default.xml.template文件中的默认配置项,而不是直接修改默认配置项。这样可以避免不必要的冲突。
- 在修改hive-site.xml文件之前,先备份原始文件,以便在出现问题时可以恢复到原始状态。
- 在修改hive-site.xml文件之前,先仔细阅读Hive的官方文档和相关的教程,了解每个配置项的含义和影响,避免不必要的错误。
在hive-site.xml文件中,需要配置以下属性:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> <description>password to use against metastore database</description> </property>
其中,ConnectionURL属性指定了连接MySQL数据库的URL,ConnectionDriverName属性指定了MySQL JDBC驱动的类名,ConnectionUserName和ConnectionPassword属性指定了连接MySQL数据库的用户名和密码。
在终端中输入hive命令,启动Hive服务,例如:
hive
启动成功后,就可以使用Hive的命令行界面来创建数据库、表等对象了。 然后就可以用上面服务器创建hive数据库指令:
不写了 费脑 我淦
版权归原作者 是汤圆丫 所有, 如有侵权,请联系我们删除。