1. 程式人生 > >hive 本地、hdfs資料匯入

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