hive 本地、hdfs資料匯入
1.1匯入內部表 (1)本地或者hdfs匯入: LOAD DATA[LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLEtablename [PARTITION(partcol1=val1, partcol2=val2 ...)] 區別是看有無關鍵字local,有local表示從本地路徑匯入,無local表示從hadoop(hbase或hdfs)匯入。 匯入的前提是目標表必須存在。如果無表要先建表,再匯入: CREATE TABLE myword(idSTRING, counts INT, dt STRING) row formatdelimitedfields terminated by ‘\t’; (2)用hive表的select結果匯入 INSERT OVERWRITE TABLE T1 SELECT * FROMT2;
其中,INSERT OVERWRITE TABLE表示覆蓋,刪除原資料;
而INSERT into TABLE 表示增量的插入,不刪除原資料。
另外,
刪除表:drop table if exists T1;
清空表:truncate table T1;
1.2 匯入外部表: 建表時直接指定資料來源(不能指定本地檔案,必須是hdfs路徑): (1)Hdfs上資料匯入hive:
CREATE EXTERNAL TABLE wizad_mdm_dev_lmj_edition_20141120 ( cookie_id STRING, guid STRING ) ROWFORMAT DELIMITED FIELDSTERMINATEDBY ',' LINESTERMINATEDBY '\n' storedas textfile LOCATION'/user/wizad/test/lmj/edition_compare/'; 其中,也可以用全路徑location'hdfs://namenode/user/wizad/test/lmj/edition_compare/';
(2)Hbase上資料匯入hive表:
先指定引數
SET mapred.job.queue.name=queue3;
SEThbase.client.scanner.caching=5000;
SEThbase.zookeeper.quorum=datanode06,datanode07,datanode08;
SET zookeeper.znode.parent=/hbase;
有map型別結構,建表時需要指明:
CREATE EXTERNAL TABLE lxw2 (
key string,
value map<STRING,STRING>
)
STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping" =":key,fixeddim:")
TBLPROPERTIES("hbase.table.name"="wizad_mdm_task_geely_hk_20141014");
查詢結果
SELECT KEY,dim_name,dim_value FROM lxw2
LATERAL VIEW explode(VALUE) myTable1AS dim_name,dim_value
--WHERE KEY = '000000054153796 --------------------- 原文:https://blog.csdn.net/longshenlmj/article/details/41519503?utm_source=copy