久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Hive數(shù)據(jù)如何導(dǎo)入導(dǎo)出mysql

144次閱讀
沒有評論

共計 4442 個字符,預(yù)計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家分享的是有關(guān) Hive 數(shù)據(jù)如何導(dǎo)入導(dǎo)出 mysql 的內(nèi)容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

Hive 定位:ETL(數(shù)據(jù)倉庫)工具
將數(shù)據(jù)從來源端經(jīng)過抽取(extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的工具, 如像:kettle

DML

批量插入 / 批量導(dǎo)入
LOAD DATA [LOCAL] INPATH filepath  [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 …)]
注:filepath 可以是 hdfs 路徑或者是 S3 路徑,如 hdfs://namenode:9000/user/hive/project/data1
1. 從本地文件導(dǎo)入到表
load data local inpath test.txt  into table test;
2. 從 hdfs 導(dǎo)入到表
load data inpath /home/test/add.txt  into table test;
3. 從表查詢中導(dǎo)入到表
insert into table test select id, name, tel from test;
4. 將查詢數(shù)據(jù)導(dǎo)入到多個表
from source_table
insert into table test select id, name, tel from dest1_table select src.* where src.id  100
insert into table test select id, name, tel from dest2_table select src.* where src.id  100
insert into table test select id, name, tel from dest3_table select src.* where src.id  100;
5. 建表時導(dǎo)入
create table test4 as select id, name, tel from test;
指定分隔符導(dǎo)出數(shù)據(jù)
insert overwrite local directory  /home/hadoop/export_hive  
row format delimited 
fields terminated by  \t  
select * from test;
刪除 / 清空
1. 刪除 table1 中不符合條件的數(shù)據(jù)
insert overwrite table table1
select * from table1 where XXXX;
2. 清空表
insert overwrite table t_table1
select * from t_table1 where 1=0;
3. 截斷表(注:不能截斷外部表)
truncate table table_name;
4. 刪除 hdfs 對應(yīng)的表數(shù)據(jù)達(dá)到清空表(表結(jié)構(gòu)依然存在)
hdfs dfs -rmr /user/hive/warehouse/test
 
注:1 和 2 本質(zhì)是覆寫表來實現(xiàn)清除數(shù)據(jù)
delete 與 update
在 hive 中默認(rèn)不支持事務(wù),因此默認(rèn)不支持 delete 與 update,如果需要支持必須在 hive-site.xml 中配置打開

DDL

庫 / 表 / 索引 / 視圖 / 分區(qū) / 分桶

數(shù)據(jù)庫

列出 / 創(chuàng)建 / 修改 / 刪除 / 查看信息
1. 列出所有數(shù)據(jù)庫
show databases;
2. 創(chuàng)建數(shù)據(jù)庫
create database test;
3. 刪除
drop database test;
 
處于安全原因,直接 drop 有數(shù)據(jù)的數(shù)據(jù)庫會報錯,此時需要 cascade 關(guān)鍵字忽略報錯刪除
drop database if exists test cascade;
4. 查看數(shù)據(jù)庫信息
describe database test;

列出 / 創(chuàng)建 / 修改 / 刪除 / 查看信息
1. 列出所有表
 
當(dāng)前數(shù)據(jù)庫的所有表
show tables;
 
指定數(shù)據(jù)庫的所有表
show tables in db_name;
 
支持正則
show tables  .*s
2. 創(chuàng)建表
create table test
(id int,
a string
)
ROW FORMAT DELIMITED  行分割
FIELDS TERMINATED BY ‘,’  字段分隔符
LINES TERMINATED BY ‘\n’  行分隔符
STORED AS TEXTFILE;  作為文本存儲
創(chuàng)建基于正則切分行字段的表
add jar ../build/contrib/hive_contrib.jar;
 
CREATE TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE org.apache.hadoop.hive.contrib.serde2.RegexSerDe
WITH SERDEPROPERTIES (
input.regex  = ([^]*) ([^]*) ([^]*) (-|//[[^//]]*//]) ([^ /]*|/ [^/]*/ ) (-|[0-9]*) (-|[0-9]*)(?: ([^ /]*|/ [^/]*/ ) ([^ /]*|/ [^/]*/ ))? ,
output.format.string  = %1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s
)
STORED AS TEXTFILE;
3. 修改
加一個新列
ALTER TABLE test ADD COLUMNS (new_col2 INT COMMENT  a comment
 
改表名
ALTER TABLE old_name RENAME TO new_name;
4. 刪除
drop table test;
5. 查看信息
 
顯示列信息
desc test;
 
顯示詳細(xì)表信息
desc formatted test;

索引

創(chuàng)建索引
CREATE INDEX index_name  
ON TABLE base_table_name (col_name, …)  
AS  index.handler.class.name
 
如:DROP INDEX index_name ON table_name  
 
重建索引
ALTER INDEX index_name ON table_name [PARTITION (…)] REBUILD 
 
如:alter index index1_index_test on index_test rebuild; 
 
刪除索引
DROP INDEX index_name ON table_name  
 
列出索引
show index on index_test;

視圖

CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], …) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, …)] AS SELECT
 
注:hive 只支持邏輯視圖,不支持物化視圖
? 增加視圖
? 如果沒有提供表名,視圖列的名字將由定義的 SELECT 表達(dá)式自動生成
? 如果修改基本表的屬性,視圖中不會體現(xiàn),無效查詢將會失敗
? 視圖是只讀的,不能用 LOAD/INSERT/ALTER
? 刪除視圖  DROP VIEW view_name
 

分區(qū)(重點)

列出 / 創(chuàng)建 / 修改 / 刪除
1. 列出一個表的所有分區(qū)
show partitions test;
2. 創(chuàng)建分區(qū)表
create table test
(id int,
a string,
)
partitioned by (b string,c int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
3. 對現(xiàn)有表添加分區(qū)
ALTER TABLE test ADD IF NOT EXISTS
PARTITION (year = 2017) LOCATION‘/hiveuser/hive/warehouse/data_zh.db/data_zh/2017.txt’;
4. 刪除分區(qū)
ALTER TABLE test DROP IF EXISTS PARTITION(year =2017);
5. 加載數(shù)據(jù)到分區(qū)表
LOAD DATA INPATH‘/data/2017.txt’INTO TABLE test PARTITION(year=2017);
6. 未分區(qū)表數(shù)據(jù)導(dǎo)入分區(qū)表
insert overwrite table part_table partition (YEAR,MONTH) select * from no_part_table;
7. 動態(tài)分區(qū)指令
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
#set hive.enforce.bucketing = true;
 
開啟動態(tài)分區(qū)后導(dǎo)入數(shù)據(jù)時可以省略指定分區(qū)的步驟
LOAD DATA INPATH‘/data/2017.txt’INTO TABLE test PARTITION(year);

分桶

CREATE TABLE bucketed_user (id INT) name STRING)
CLUSTERED BY (id) INTO 4 BUCKETS;
對于每一個表(table)或者分區(qū),Hive 可以進(jìn)一步組織成桶,也就是說桶是更為細(xì)粒度的數(shù)據(jù)范圍劃分。Hive 也是 針對某一列進(jìn)行桶的組織。Hive 采用對列值哈希,然后除以桶的個數(shù)求余的方式?jīng)Q定該條記錄存放在哪個桶當(dāng)中。
把表(或者分區(qū))組織成桶(Bucket)有兩個理由:
(1)獲得更高的查詢處理效率。桶為表加上了額外的結(jié)構(gòu),Hive 在處理有些查詢時能利用這個結(jié)構(gòu)。具體而言,連接兩個在(包含連接列的)相同列上劃分了桶的表,可以使用 Map 端連接(Map-side join)高效的實現(xiàn)。比如 JOIN 操作。對于 JOIN 操作兩個表有一個相同的列,如果對這兩個表都進(jìn)行了桶操作。那么將保存相同列值的桶進(jìn)行 JOIN 操作就可以,可以大大較少 JOIN 的數(shù)據(jù)量。
(2)使取樣(sampling)更高效。在處理大規(guī)模數(shù)據(jù)集時,在開發(fā)和修改查詢的階段,如果能在數(shù)據(jù)集的一小部分?jǐn)?shù)據(jù)上試運行查詢,會帶來很多方便。

感謝各位的閱讀!關(guān)于“Hive 數(shù)據(jù)如何導(dǎo)入導(dǎo)出 mysql”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-17發(fā)表,共計4442字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 威远县| 信丰县| 济阳县| 荔波县| 晴隆县| 泰顺县| 绥宁县| 巴东县| 石渠县| 桃园市| 莒南县| 内江市| 远安县| 长治市| 马尔康县| 清水县| 泌阳县| 锡林郭勒盟| 光山县| 青铜峡市| 化隆| 芦溪县| 西乌珠穆沁旗| 宁化县| 衡阳市| 扶余县| 清丰县| 武定县| 大兴区| 绥化市| 彭泽县| 潞西市| 南木林县| 右玉县| 青浦区| 梅河口市| 新乡市| 扶余县| 延庆县| 綦江县| 安陆市|