hive安裝
hive鏡像:
http://mirror.bit.edu.cn/apache/hive/
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
1.解壓、添加環境變量
把apache-hive-2.3.6-bin.tar.gz上傳到linux的/opt/目錄下,並解壓。
[root@master opt]# tar -zxvf ./ apache-hive-2.3.6-bin.tar.gz #解壓文件到當前/opt目錄
[root@master opt]# mv ./apache-hive-2.3.6-bin ./hive #將文件夾名改為hive
添加環境變量:
[root@master opt]# vi ~/.bash_profile
添加如下代碼:
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/sbin:$PATH
source ~/.bash_profile #立即生效
2.修改配置文件
在/opt/hive/confg/目錄下新建一個文件名稱為 hive-site.xml。
[root@master conf]# vi ./hive-site.xml
內容如下:
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
<description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatebaseIfNotExist=true@amp;useSSL=false</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>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword </name>
<value>bigData@123</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.readOnlyDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateColumns</name>
<value>true</value>
</property>
</configuration>
3.配置hive-env.sh
[root@master conf]# cp hive-env.sh.template hive-env.sh
[root@master conf]# vi hive-env.sh
添加如下內容:
HADOOP_HOME=/opt/hadoop # 配置 HAOOP_HOME 目錄
export HIVE_CONF_DIR=/opt/hive/conf # 配置 Hive 配置目錄信息
3.添加mysql驅動
使用 Xftp 復制 mysql-connector-java-5.1.46.jar JAVA 驅動包到 hive/lib下面
創建目錄,與前面配置目錄對應
[root@master conf]# hadoop fs -mkdir -p /user/hive/warehouse
4.啟動hive
啟動hadoop
cd $HADOOP_HOME
./start-all.sh
啟動metastore服務:一般默認會自動該服務
[root@master ~]# hive --service metastore &
[1] 6286
啟動hive客戶端
hive
5.hive簡單使用
以數據源chengdu.txt為例,數據如下:
大數據分析開發工程師|成都|8K-15K|3-5年|本科
雙休大數據銷售高提成|成都|8K-10K|3-5年|中專
無責3K+雙休高提成+大數據|成都|6K-12K|不限|學歷不限
大數據分析專員|成都|6.5K-12K|1-3年|大專
大數據高級工程師|成都-金牛區|10K-15K|3-5年|本科
高級Java工程師(架構、大數據)|成都-天府新區|25K-40K|3-5年|本科
大數據架構師|成都-高新區|20K-30K|5-10年|本科
大數據安全研發工程師|成都-高新區|15K-20K|1-3年|碩士
大數據軟件開發工程師|成都-高新區|10K-15K|不限|本科
大數據架構師|成都-高新區|20K-30K|5-10年|本科
大數據開發工程師|成都-高新區|10K-15K|不限|學歷不限
大數據工程師|成都-高新區|10K-15K|3-5年|本科
大數據架構師初級|成都-高新區|6K-10K|1-3年|本科
大數據架構師|成都-高新區|15K-25K|5-10年|本科
大數據架構師|成都|15K-25K|5-10年|本科
大數據架構師|成都|12K-22K|3-5年|本科 ……
1:創建表:與數據源字段對應
hive> create table tb_chengdu(
> occupation string,
> adress string,
> salary string,
> work_exp string,
> education string
> )row format delimited fields terminated by '|'; ##注意分割符
OK
Time taken: 1.784 seconds
hive>
hive> show tables;
OK
tb_chengdu
2:加載數據chengdu.tx
hive> load data local inpath '/opt/data/chengdu.txt' into table tb_chengdu; ##數據在mater本地,並非hdfs上
Loading data to table default.tb_chengdu
OK
Time taken: 5.205 seconds
3:查詢前五條大數據相關的職位、薪水、工作經驗、學歷等字段
hive> select occupation,salary,work_exp,education from tb_chengdu where occupation like '%大數據%' limit 5;
OK
大數據分析開發工程師 8K-15K 3-5年 本科
雙休大數據銷售高提成 8K-10K 3-5年 中專
無責3K+雙休高提成+大數據 6K-12K 不限 學歷不限
大數據分析專員 6.5K-12K 1-3年 大專
大數據高級工程師 10K-15K 3-5年 本科
Time taken: 4.175 seconds, Fetched: 5 row(s)
hive的使用說明
可以把結構化的數據文件映射成一張數據庫表。
學生信息
張三|190908|男|大數據18-1
李四|190907|女|大數據18-1
元數據Hive Metasore
Metasore:就是Hive元數據集中存儲的地方。
Hive默認用Derby數據庫存儲元數據,只能允許一個用戶訪問。用於測試。
使用mysql作為外置(遠程)數據存儲引擎。可以多用戶同時訪問。
其中常用類型如表1所示。
表1 常用數據類型
類型 |
名稱 |
描述 |
基本類型 |
整型 |
分4個子類,分別是TINYINT、SMALLINT、INT、BIGINT 。常用的是INT |
浮點型 |
分FLOAT(單精度浮點數)和DOUBLE(雙精度浮點數) |
|
布爾型 |
TRUE、FALSE |
|
小數 |
DECIMAL |
|
字符串 |
VARCHAR、CHAR、string |
|
日期和時間 |
DATE、Timestamp |
|
空值 |
NULL |
|
復合類型 |
Arrays |
數組 |
Structs |
包含多個鍵值對 |
|
Maps |
鍵值對 |
表類型
Hive的數據表分四類,分別是:內部表、外部表、分區表和桶表。每種表都有各自的特點,這里簡要介紹如下:
(1) 內部表:由Hive自身管理,默認情況下創建的都是內部表。內部表數據存儲位置默認存儲在HDFS的/user/hive/warehouse路徑下,可以通過由hive-site.xml文件中hive.metastore.warehouse.dir節點指定其它目錄。當刪除內部表時,相關元數據和HDFS上的數據也隨之刪除。
(2) 外部表:創建時需要指定external參數。外部表數據的存儲位置由用戶指定。刪除外部表僅僅會刪除元數據,HDFS上的文件並不會被刪除。
(3) 分區表:根據分區字段和分區值在HDFS上創建數據分類目錄。上傳的數據會根據分類存放到不同的目錄下。
(4) 桶表:指定數據分桶的個數,上傳數據時根據鍵的hash值均勻的存到不同的桶中。分桶是將數據拆分成小塊,存到各自的桶,分區是將數據分類存到各自的目錄。
附件:
1:hive安裝問題集
https://blog.csdn.net/l1028386804/article/details/51566262 ##無法初始化數據源的問題
https://blog.csdn.net/gaoganghua/article/details/80621670 ##數據庫編碼修改為labtin1