目錄
前言:?
Hive的一些基本概念:
數(shù)據(jù)庫(kù)(Database)
服務(wù)器創(chuàng)建hive數(shù)據(jù)庫(kù)指令:
Spring Boot中集成Hive數(shù)據(jù)庫(kù)
在application.properties或application.yml文件中配置Hive JDBC連接屬性,例如:
在application.properties或application.yml文件中配置MyBatis屬性,例如:
創(chuàng)建Mapper接口和映射文件,例如:
在Spring Boot的配置類中,使用@MapperScan注解注冊(cè)Mapper接口,然后調(diào)用對(duì)應(yīng)方法 例如:
Hive數(shù)據(jù)庫(kù)在服務(wù)器配置事項(xiàng):
在hive-site.xml文件中,需要配置以下屬性:
前言:?
? ?記錄筆記一手
Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化數(shù)據(jù)映射到Hadoop的分布式文件系統(tǒng)上,并提供類SQL查詢的功能。以下是Hive的一些基本概念:
- 數(shù)據(jù)庫(kù)(Database)
- Hive中的數(shù)據(jù)庫(kù)類似于關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù),用于存儲(chǔ)表和其他元數(shù)據(jù)。每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)唯一的名稱,可以通過USE語(yǔ)句來切換數(shù)據(jù)庫(kù)。
- 表(Table)
- Hive中的表類似于關(guān)系型數(shù)據(jù)庫(kù)中的表,用于存儲(chǔ)數(shù)據(jù)。每個(gè)表都有一個(gè)唯一的名稱和一組列定義,可以通過CREATE TABLE語(yǔ)句來創(chuàng)建表。
- 分區(qū)(Partition)
- Hive中的分區(qū)是指將表按照某個(gè)列的值進(jìn)行劃分,每個(gè)分區(qū)對(duì)應(yīng)一個(gè)子目錄,用于存儲(chǔ)該分區(qū)的數(shù)據(jù)。分區(qū)可以提高查詢效率,可以通過ALTER TABLE語(yǔ)句來添加、刪除和修改分區(qū)。
- 存儲(chǔ)格式(Storage Format)
- Hive中的存儲(chǔ)格式指數(shù)據(jù)在Hadoop分布式文件系統(tǒng)上的存儲(chǔ)方式,常見的存儲(chǔ)格式包括文本格式、序列化格式、列式存儲(chǔ)格式等??梢酝ㄟ^CREATE TABLE語(yǔ)句的STORED AS子句來指定存儲(chǔ)格式。
- 數(shù)據(jù)類型(Data Type)
- Hive中支持的數(shù)據(jù)類型包括基本數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型和集合數(shù)據(jù)類型等。常見的數(shù)據(jù)類型包括INT、BIGINT、STRING、BOOLEAN、ARRAY、MAP等。
- 查詢語(yǔ)句(Query)
- Hive中的查詢語(yǔ)句類似于SQL語(yǔ)句,可以使用SELECT、FROM、WHERE、GROUP BY、ORDER BY等關(guān)鍵字進(jìn)行查詢。Hive支持類SQL查詢語(yǔ)句的語(yǔ)法,但是與SQL語(yǔ)言有一些差異,例如Hive中不支持UPDATE和DELETE語(yǔ)句。
Hive的一些基本概念:
Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化數(shù)據(jù)映射到Hadoop的分布式文件系統(tǒng)上,并提供類SQL查詢的功能。以下是Hive的一些基本概念:
數(shù)據(jù)庫(kù)(Database)
- Hive中的數(shù)據(jù)庫(kù)類似于關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù),用于存儲(chǔ)表和其他元數(shù)據(jù)。每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)唯一的名稱,可以通過USE語(yǔ)句來切換數(shù)據(jù)庫(kù)。Hive中的數(shù)據(jù)庫(kù)并不是物理上的存儲(chǔ)結(jié)構(gòu),而是一種邏輯上的組織方式。在Hive中,每個(gè)數(shù)據(jù)庫(kù)都對(duì)應(yīng)一個(gè)目錄,該目錄下存儲(chǔ)了該數(shù)據(jù)庫(kù)中的所有表和其他元數(shù)據(jù)。
服務(wù)器創(chuàng)建hive數(shù)據(jù)庫(kù)指令:
在Hive中,可以通過CREATE DATABASE語(yǔ)句來創(chuàng)建數(shù)據(jù)庫(kù),例如:
CREATE DATABASE mydb;
在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),可以指定數(shù)據(jù)庫(kù)的名稱和數(shù)據(jù)庫(kù)的位置,例如:
CREATE DATABASE mydb LOCATION '/user/hive/mydb';
在Hive中,可以通過SHOW DATABASES語(yǔ)句來查看所有的數(shù)據(jù)庫(kù),例如:
SHOW DATABASES;
在Hive中,可以通過USE語(yǔ)句來切換數(shù)據(jù)庫(kù),例如:
USE mydb;
在切換數(shù)據(jù)庫(kù)后,可以通過SHOW TABLES語(yǔ)句來查看該數(shù)據(jù)庫(kù)中的所有表,例如:
SHOW TABLES;
DROP DATABASE mydb; 刪除數(shù)據(jù)庫(kù);,刪除數(shù)據(jù)庫(kù)時(shí)會(huì)同時(shí)刪除該數(shù)據(jù)庫(kù)中的所有表和其他元數(shù)據(jù),因此需要謹(jǐn)慎操作。
Spring Boot中集成Hive數(shù)據(jù)庫(kù)
<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映射文件的路徑。
創(chuàng)建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接口定義了一個(gè)findAll()方法,使用@Select注解指定SQL查詢語(yǔ)句。映射文件中定義了一個(gè)resultMap和一個(gè)select標(biāo)簽,用于將查詢結(jié)果映射到MyEntity實(shí)體類中。
在Spring Boot的配置類中,使用@MapperScan注解注冊(cè)Mapper接口,然后調(diào)用對(duì)應(yīng)方法 例如:
@Configuration @MapperScan("com.example.mapper") public class MyConfig { } @Autowired private MyMapper myMapper; public void queryHive() { ? ? List<MyEntity> result = myMapper.findAll(); ? ? // 處理查詢結(jié)果 }使用@Autowired注解注入MyMapper接口,然后使用myMapper.findAll()方法執(zhí)行SQL查詢語(yǔ)句,最后使用List類型的result變量來保存查詢結(jié)果。
需要注意的是,Hive的JDBC驅(qū)動(dòng)與其他關(guān)系型數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)有一些差異,例如Hive不支持事務(wù)和索引等特性
Hive數(shù)據(jù)庫(kù)在服務(wù)器配置事項(xiàng):
用MySQL來存儲(chǔ)Hive元數(shù)據(jù)時(shí),需要進(jìn)行以下配置
- 安裝MySQL?
- 創(chuàng)建Hive元數(shù)據(jù)數(shù)據(jù)庫(kù)?
- 首先需要安裝MySQL數(shù)據(jù)庫(kù),可以從MySQL官網(wǎng)下載安裝包,也可以使用Linux發(fā)行版自帶的MySQL軟件包。
在MySQL中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),用于存儲(chǔ)Hive的元數(shù)據(jù),例如:
CREATE DATABASE metastore;
在MySQL中創(chuàng)建一個(gè)用戶,用于訪問Hive元數(shù)據(jù)數(shù)據(jù)庫(kù),例如:
CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword';
在上述MySQL語(yǔ)句中,'hiveuser'是要?jiǎng)?chuàng)建的MySQL用戶的用戶名,'localhost'表示該用戶只能從本地主機(jī)訪問MySQL數(shù)據(jù)庫(kù),IDENTIFIED BY 'hivepassword'表示該用戶的密碼為hivepassword。
需要注意的是,創(chuàng)建MySQL用戶和授權(quán)訪問權(quán)限的操作需要具有MySQL的管理員權(quán)限,因此需要使用具有管理員權(quán)限的MySQL用戶來執(zhí)行這些操作。
將Hive元數(shù)據(jù)數(shù)據(jù)庫(kù)的訪問權(quán)限授予Hive元數(shù)據(jù)用戶,例如:
GRANT ALL PRIVILEGES ON metastore.* TO 'hiveuser'@'localhost';
配置Hive-site.xml文件:
在Hive的conf目錄下,有一個(gè)hive-default.xml.template文件,將其復(fù)制一份并重命名為hive-site.xml,然后根據(jù)需要進(jìn)行配置。需要注意的是,hive-site.xml文件中的配置項(xiàng)會(huì)覆蓋hive-default.xml.template文件中的默認(rèn)配置項(xiàng)。
僅在hive-site.xml文件中配置需要修改的屬性,不要修改其他屬性。這樣可以避免不必要的沖突。
在hive-site.xml文件中,使用標(biāo)簽覆蓋hive-default.xml.template文件中的默認(rèn)配置項(xiàng),而不是直接修改默認(rèn)配置項(xiàng)。這樣可以避免不必要的沖突。
在修改hive-site.xml文件之前,先備份原始文件,以便在出現(xiàn)問題時(shí)可以恢復(fù)到原始狀態(tài)。
在修改hive-site.xml文件之前,先仔細(xì)閱讀Hive的官方文檔和相關(guān)的教程,了解每個(gè)配置項(xiàng)的含義和影響,避免不必要的錯(cuò)誤。
在hive-site.xml文件中,需要配置以下屬性:
?文章來源地址http://www.zghlxwxcb.cn/news/detail-639318.html
<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數(shù)據(jù)庫(kù)的URL,ConnectionDriverName屬性指定了MySQL JDBC驅(qū)動(dòng)的類名,ConnectionUserName和ConnectionPassword屬性指定了連接MySQL數(shù)據(jù)庫(kù)的用戶名和密碼。
?
在終端中輸入hive命令,啟動(dòng)Hive服務(wù),例如:
hive?
啟動(dòng)成功后,就可以使用Hive的命令行界面來創(chuàng)建數(shù)據(jù)庫(kù)、表等對(duì)象了。 然后就可以用上面服務(wù)器創(chuàng)建hive數(shù)據(jù)庫(kù)指令:
?文章來源:http://www.zghlxwxcb.cn/news/detail-639318.html
?
不寫了 費(fèi)腦 我淦
到了這里,關(guān)于[Hive的基本概念之---數(shù)據(jù)庫(kù) ]的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!