這篇文章主要為大家展示了“如何在Hive中使用Load語句加載數(shù)據(jù)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何在Hive中使用Load語句加載數(shù)據(jù)”這篇文章吧。
創(chuàng)新互聯(lián)服務項目包括浚縣網(wǎng)站建設、??h網(wǎng)站制作、??h網(wǎng)頁制作以及??h網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,??h網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到浚縣省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!Hive Load語句不會在加載數(shù)據(jù)的時候做任何轉(zhuǎn)換工作,而是純粹的把數(shù)據(jù)文件復制/移動到Hive表對應的地址。語法格式如下:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename \ [PARTITION (partcol1=val1, partcol2=val2 ...)] LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename \ [PARTITION (partcol1=val1, partcol2=val2 ...)] \ [INPUTFORMAT 'inputformat' SERDE 'serde'] (3.0 or later)
幾點說明:
如果命令中帶有LOCAL,說明從本地文件系統(tǒng)加載數(shù)據(jù),文件路徑可以是相對路徑,也可以是絕對路徑。在這種情況下,首先將文件從本地復制到hdfs相應的位置,然后移動到hive表格中,這個時候原始數(shù)據(jù)文件是存在于Hive表之下的路徑下。
如果不包含LOCAL關鍵字,則移動HDFS文件到目標表中。
filepath 可以是一個相對路徑,也可以是一個絕對路徑??梢允且粋€文件,也可以是一個文件夾目錄。如果是一個目錄,這個時候文件夾下的所有文件都會被加載。
命令中如果帶有overwirte,代表加載數(shù)據(jù)之前會清空目標表格,否則就是追加的方式。
如果表是分區(qū)表則必須指定PARTITION從句,否則會報如下錯誤:
FAILED:SemanticException [Error 10062]: Need to specify partition columns because the destination table is partitioned
創(chuàng)建如下的表結(jié)構(gòu)(員工表)
create table emp (empno int, ename string, job string, mgr int, hiredate string, sal int, comm int, deptno int) row format delimited fields terminated by ',';
測試數(shù)據(jù)如下:(emp.csv)
7369,SMITH,CLERK,7902,1980/12/17,800,0,20 7499,ALLEN,SALESMAN,7698,1981/2/20,1600,300,30 7521,WARD,SALESMAN,7698,1981/2/22,1250,500,30 7566,JONES,MANAGER,7839,1981/4/2,2975,0,20 7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30 7698,BLAKE,MANAGER,7839,1981/5/1,2850,0,30 7782,CLARK,MANAGER,7839,1981/6/9,2450,0,10 7788,SCOTT,ANALYST,7566,1987/4/19,3000,0,20 7839,KING,PRESIDENT,-1,1981/11/17,5000,0,10 7844,TURNER,SALESMAN,7698,1981/9/8,1500,0,30 7876,ADAMS,CLERK,7788,1987/5/23,1100,0,20 7900,JAMES,CLERK,7698,1981/12/3,950,0,30 7902,FORD,ANALYST,7566,1981/12/3,3000,0,20 7934,MILLER,CLERK,7782,1982/1/23,1300,0,10
加載HDFS的數(shù)據(jù)到Hive的表
load data inpath '/scott/emp.csv' into table emp;
加載本地的數(shù)據(jù)到Hive的表
load data local inpath '/root/temp/emp.csv' into table emp;
當然我們也可以使用insert語句加載數(shù)據(jù)。例如,我們創(chuàng)建如下的分區(qū)表:
create table emp_part_1 (empno int, ename string, job string, mgr int, hiredate string, sal int, comm int) partitioned by (deptno int) row format delimited fields terminated by ',';
使用insert語句將數(shù)據(jù)插入到對應的分區(qū)上。
插入10號部門的員工數(shù)據(jù) insert into table emp_part_1 partition(deptno=10) select empno,ename,job,mgr,hiredate,sal,comm from emp where deptno=10; 插入20號部門的員工數(shù)據(jù) insert into table emp_part_1 partition(deptno=20) select empno,ename,job,mgr,hiredate,sal,comm from emp where deptno=20; 插入30號部門的員工數(shù)據(jù) insert into table emp_part_1 partition(deptno=30) select empno,ename,job,mgr,hiredate,sal,comm from emp where deptno=30;
這里我們使用了一個子查詢查詢出了對應部門的員工數(shù)據(jù),再使用insert語句插入到對應的分區(qū)上。
以上是“如何在Hive中使用Load語句加載數(shù)據(jù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道!