[TOC]
組件
metastore
gateway
hiveserver2
1 在HDFS中創(chuàng)建/tmp和/user/hive/warehouse并設(shè)置權(quán)限
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
2 下載mysql-connector-java-5.1.27-bin.jar文件台腥,并放到$HIVE_HOME/lib目錄下
下載mysql-connector-java-5.1.27-bin.jar文件态贤,并放到$HIVE_HOME/lib目錄下
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.27
3 需要創(chuàng)建在mysql 中 hive 的數(shù)據(jù)庫 (注意docker 中的mysql容器啟動)
- MariaDB數(shù)據(jù)庫管理系統(tǒng)是MySQL的一個分支,啟動我本地的maria
[圖片上傳失敗...(image-c078bb-1571909665062)]
4 初始化meta數(shù)據(jù)庫
schematool -initSchema -dbType mysql
5 測試hive shell
hive
show databases;
show tables;
- 紅框是沒啟動數(shù)據(jù)庫的
- 綠框是啟動后的
6 將本地文件考入 hdfs 文件系統(tǒng)中
hdfs dfs -put <local> <hdfs>
7 hive創(chuàng)建新表
hive> CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
OK
Time taken: 0.121 seconds
8 導(dǎo)入數(shù)據(jù)t_hive.txt到t_hive表(/hdfs導(dǎo)入)
hive> LOAD DATA LOCAL INPATH '/tmp/t_hive.txt' OVERWRITE INTO TABLE t_hive ;
Loading data to table default.t_hive
OK
Time taken: 0.609 seconds
9 查看表
hive> show tables;
OK
t_hive
Time taken: 0.099 seconds
10 正則匹配表名
hive>show tables '*t*';
OK
t_hive
Time taken: 0.065 seconds
11 查看表結(jié)構(gòu)
hive> desc t_hive;
OK
a int
b int
c int
Time taken: 0.1 seconds
12在hive中查看目錄結(jié)構(gòu)
hive> dfs -lsr /;
創(chuàng)建test表
create table test(
id int, name string
,tel string)
partitioned by
(age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
下面語句就是將wyp表中的查詢結(jié)果并插入到test表中:
hive> insert into table test
partition (age='25')
select id, name, tel
from wyp;
查看表
hive> select * from test;
讓hive 事務(wù)支持ACID
---修改hive-site.xml-使他支持ACID--
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<property>
<name>hive.txn.manager</name>
<value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
<name>hive.compactor.initiator.on</name>
<value>true</value>
</property>
<property>
<name>hive.compactor.worker.threads</name>
<value>2</value>
</property>
hive 動態(tài)分區(qū) && 靜態(tài)分區(qū)
跟靜態(tài)分區(qū)對比的好處是 sql 語句沒有那么多。
-
靜態(tài)分區(qū)& 查詢
- 創(chuàng)建 create table ptest (userid int) partitioned by (date string) row format delimited fields terminated by '\t'; - 導(dǎo)入 load data local inpath '/' into table ptest partion (date="2019-07-11");
hive 分區(qū)表和分桶表
分桶是相對分區(qū)進(jìn)行更細(xì)粒度的劃分。分桶將整個數(shù)據(jù)內(nèi)容安裝某列屬性值得hash值進(jìn)行區(qū)分,如要安裝name屬性分為3個桶,就是對name屬性值的hash值對3取摸
Hive學(xué)習(xí)之抽樣(tablesample)
當(dāng)數(shù)據(jù)量特別大時坯汤,對全體數(shù)據(jù)進(jìn)行處理存在困難時,抽樣就顯得尤其重要了搀愧。抽樣可以從被抽取的數(shù)據(jù)中估計和推斷出整體的特性惰聂,是科學(xué)實驗疆偿、質(zhì)量檢驗、社會調(diào)查普遍采用的一種經(jīng)濟(jì)有效的工作和研究方法搓幌。
Hive支持桶表抽樣和塊抽樣杆故,下面分別學(xué)習(xí)。所謂桶表指的是在創(chuàng)建表時使用CLUSTERED BY子句創(chuàng)建了桶的表溉愁。桶表抽樣的語法如下:
table_sample: TABLESAMPLE (BUCKET x OUT OF y [ON colname])
hive 引擎
hive.execution.engine=spark
hive.execution.engine=mr
37開 - 原創(chuàng)文章(已經(jīng)在多平臺發(fā)表)处铛,轉(zhuǎn)載請標(biāo)明出處