中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive數據如何導入導出mysql

發布時間:2021-12-10 14:29:37 來源:億速云 閱讀:921 作者:小新 欄目:數據庫

這篇文章給大家分享的是有關Hive數據如何導入導出mysql的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

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

DML

批量插入/批量導入
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.從本地文件導入到表
load data local inpath 'test.txt' into table test;
2.從hdfs導入到表
load data inpath '/home/test/add.txt' into table test;
3.從表查詢中導入到表
insert into table test select id, name, tel from test;
4.將查詢數據導入到多個表
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.建表時導入
create table test4 as select id, name, tel from test;
指定分隔符導出數據
insert overwrite local directory '/home/hadoop/export_hive' 
row format delimited 
fields terminated by '\t' 
select * from test;
刪除/清空
1.刪除table1中不符合條件的數據
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對應的表數據達到清空表(表結構依然存在)
hdfs dfs -rmr /user/hive/warehouse/test
 
注:1和2本質是覆寫表來實現清除數據
delete 與 update
在hive中默認不支持事務,因此默認不支持delete與update,如果需要支持必須在hive-site.xml中配置打開

DDL

庫/表/索引/視圖/分區/分桶

數據庫

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

列出/創建/修改/刪除/查看信息
1.列出所有表
 
當前數據庫的所有表
show tables;
 
指定數據庫的所有表
show tables in db_name;
 
支持正則
show tables '.*s';
2.創建表
create table test
(id int,
a string
)
ROW FORMAT DELIMITED        行分割
FIELDS TERMINATED BY ‘,’    字段分隔符
LINES TERMINATED BY ‘\n’    行分隔符
STORED AS TEXTFILE;         作為文本存儲
創建基于正則切分行字段的表
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;
 
顯示詳細表信息
desc formatted test;

索引

創建索引
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表達式自動生成
?如果修改基本表的屬性,視圖中不會體現,無效查詢將會失敗
?視圖是只讀的,不能用LOAD/INSERT/ALTER
?刪除視圖  DROP VIEW view_name
 

分區(重點)

列出/創建/修改/刪除
1.列出一個表的所有分區
show  partitions test;
2.創建分區表
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.對現有表添加分區
ALTER TABLE test ADD IF NOT EXISTS
PARTITION (year = 2017) LOCATION ‘/hiveuser/hive/warehouse/data_zh.db/data_zh/2017.txt’;
4.刪除分區
ALTER TABLE test DROP IF EXISTS PARTITION(year =2017);
5.加載數據到分區表
LOAD DATA INPATH ‘/data/2017.txt’ INTO TABLE test PARTITION(year=2017);
6.未分區表數據導入分區表
insert overwrite table part_table partition (YEAR,MONTH) select * from no_part_table;
7.動態分區指令
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
#set hive.enforce.bucketing = true;
 
開啟動態分區后導入數據時可以省略指定分區的步驟
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)或者分區, Hive可以進一步組織成桶,也就是說桶是更為細粒度的數據范圍劃分。Hive也是 針對某一列進行桶的組織。Hive采用對列值哈希,然后除以桶的個數求余的方式決定該條記錄存放在哪個桶當中。
把表(或者分區)組織成桶(Bucket)有兩個理由:
(1)獲得更高的查詢處理效率。桶為表加上了額外的結構,Hive 在處理有些查詢時能利用這個結構。具體而言,連接兩個在(包含連接列的)相同列上劃分了桶的表,可以使用 Map 端連接 (Map-side join)高效的實現。比如JOIN操作。對于JOIN操作兩個表有一個相同的列,如果對這兩個表都進行了桶操作。那么將保存相同列值的桶進行JOIN操作就可以,可以大大較少JOIN的數據量。
(2)使取樣(sampling)更高效。在處理大規模數據集時,在開發和修改查詢的階段,如果能在數據集的一小部分數據上試運行查詢,會帶來很多方便。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃源县| 扶沟县| 中西区| 本溪市| 喀喇沁旗| 太仆寺旗| 吉木乃县| 潼关县| 资阳市| 秭归县| 鱼台县| 肇东市| 河源市| 河间市| 无棣县| 潞西市| 邢台县| 乐平市| 揭西县| 澄城县| 玛纳斯县| 滦平县| 庆安县| 太和县| 商城县| 洪湖市| 信丰县| 庐江县| 卢龙县| 东乌| 修文县| 连平县| 金寨县| 行唐县| 泊头市| 高台县| 思茅市| 商城县| 遵化市| 顺昌县| 察隅县|