0


[Hive的基本概念之---数据库 ]

前言:

记录笔记一手

Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到Hadoop的分布式文件系统上,并提供类SQL查询的功能。以下是Hive的一些基本概念:

  1. 数据库(Database)
  2. Hive中的数据库类似于关系型数据库中的数据库,用于存储表和其他元数据。每个数据库都有一个唯一的名称,可以通过USE语句来切换数据库。
  3. 表(Table)
  4. Hive中的表类似于关系型数据库中的表,用于存储数据。每个表都有一个唯一的名称和一组列定义,可以通过CREATE TABLE语句来创建表。
  5. 分区(Partition)
  6. Hive中的分区是指将表按照某个列的值进行划分,每个分区对应一个子目录,用于存储该分区的数据。分区可以提高查询效率,可以通过ALTER TABLE语句来添加、删除和修改分区。
  7. 存储格式(Storage Format)
  8. Hive中的存储格式指数据在Hadoop分布式文件系统上的存储方式,常见的存储格式包括文本格式、序列化格式、列式存储格式等。可以通过CREATE TABLE语句的STORED AS子句来指定存储格式。
  9. 数据类型(Data Type)
  10. Hive中支持的数据类型包括基本数据类型、复合数据类型和集合数据类型等。常见的数据类型包括INT、BIGINT、STRING、BOOLEAN、ARRAY、MAP等。
  11. 查询语句(Query)
  12. 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元数据数据库
  1. 首先需要安装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文件中的默认配置项。

  1. 仅在hive-site.xml文件中配置需要修改的属性,不要修改其他属性。这样可以避免不必要的冲突。
  2. 在hive-site.xml文件中,使用标签覆盖hive-default.xml.template文件中的默认配置项,而不是直接修改默认配置项。这样可以避免不必要的冲突。
  3. 在修改hive-site.xml文件之前,先备份原始文件,以便在出现问题时可以恢复到原始状态。
  4. 在修改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数据库指令:

不写了 费脑 我淦

标签: hive 大数据 hadoop

本文转载自: https://blog.csdn.net/sqL520lT/article/details/131228191
版权归原作者 是汤圆丫 所有, 如有侵权,请联系我们删除。

“[Hive的基本概念之---数据库 ]”的评论:

还没有评论