最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決hive中導(dǎo)入text文件遇到的坑

 更新時(shí)間:2021年04月07日 11:04:41   作者:水墨石  
這篇文章主要介紹了解決hive中導(dǎo)入text文件遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

今天幫一同學(xué)導(dǎo)入一個(gè)excel數(shù)據(jù),我把excel保存為txt格式,然后建表導(dǎo)入,失?。》指舴袷讲黄ヅ?,無(wú)法導(dǎo)入?。。?!怎么看兩邊都是\t,怎么不匹配呢?

做為程序員,最不怕的就是失敗,因?yàn)槲覀冇幸活w勇敢的心!再來(lái)!又特么失敗。。。

想了好久,看看了看我的表格式,我犯了一個(gè)好低級(jí)的錯(cuò)誤:

hive表的存儲(chǔ)格式設(shè)置為了orcfile!!!

眾所周知:orcfile為壓縮格式,可以節(jié)約大量存儲(chǔ)空間,但orc還有個(gè)特點(diǎn)就是不能直接load數(shù)據(jù)!要想load數(shù)據(jù),我們要建一個(gè)存儲(chǔ)格式為textfile的中間表,然后再把數(shù)據(jù)抽取過(guò)去。因?yàn)檫@個(gè)錯(cuò)誤太簡(jiǎn)單,網(wǎng)上有相關(guān)科普,因此很少有把它當(dāng)錯(cuò)誤寫出來(lái)。遇到問(wèn)題的朋友們可能要走些彎路,我來(lái)補(bǔ)個(gè)漏~~~~~~

舉個(gè)栗子:

1.首先,導(dǎo)出excel表格為txt格式,(這個(gè)過(guò)程不再贅述,網(wǎng)上教程一大把)。

123,小明,666,1990-09-23 12:00:18
256,小伙,555,1989-10-06 03:57:32
142,小蘭,444,1992-07-04 05:05:45

2.在hive中創(chuàng)建表模型:

CREATE TABLE IF NOT EXISTS STUDENTS
(
ID INT COMMENT'學(xué)生',
SNAME STRING COMMENT '姓名',
SCORE INT COMMENT '得分',
STIME STRING COMMENT '考試時(shí)間'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORCFILE;

3.創(chuàng)建臨時(shí)表(中間表):

CREATE TABLE IF NOT EXISTS STUDENTS_TMP
(
ID INT COMMENT'學(xué)生',
SNAME STRING COMMENT '姓名',
SCORE INT COMMENT '得分',
STIME STRING COMMENT '考試時(shí)間'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

與目標(biāo)表只有名稱和存儲(chǔ)格式不同,其他都相同。

4.load 數(shù)據(jù)到臨時(shí)表:

load data local inpath '/export/data/1.txt' into table students_tmp;

5.將數(shù)據(jù)導(dǎo)入目標(biāo)表:

insert overwrite table students select * from students_tmp;

6.然后查看表數(shù)據(jù),大功造成:

hive > select * from students;
OK
123 小明 666 1990-09-23 12:00:18
256 小伙 555 1989-10-06 03:57:32
142 小蘭 444 1992-07-04 05:05:45
Time taken: 0.26 seconds, Fetched: 3 row(s)

其他存儲(chǔ)格式如 SEQUENCEFILE、PARQUET 等,也要選存儲(chǔ)為textfile格式,然后抽入目標(biāo)表。

一定要按照導(dǎo)出格式的分隔符建表,不然load數(shù)據(jù)必然出錯(cuò)或全是null;

excel導(dǎo)出格式:

格式 分隔符 中文名稱
text \t  制表符
csv , 逗號(hào)

7.還要注意一點(diǎn)是我們從excel導(dǎo)出的文件格式是gb2312 (無(wú)論是txt還是csv都是這個(gè)格式,都需要轉(zhuǎn)碼),我們需要把它轉(zhuǎn)成utf-8才能Load。

所以在load之前,我們一般會(huì)采取兩種辦法:

1. 在文本編輯器中進(jìn)行轉(zhuǎn)碼,帶不帶bom關(guān)系不大,然后上傳;

2.在文件所在本地目錄下執(zhí)行以下命令轉(zhuǎn)碼:

piconv -f gb2312 -t UTF-8 1.txt > 2.txt

注意,在本地目錄下命令轉(zhuǎn)碼會(huì)改變文件名,因?yàn)榇嗣顣?huì)把所文件寫入到另一個(gè)文件,并清空原文件內(nèi)容,如果我們不改名,文件內(nèi)容會(huì)完全丟失。所以,我們Load的時(shí)候一定要選擇修改后的文件名哦。

示例:

轉(zhuǎn)碼前數(shù)據(jù):

hive> select * from students;
OK
112	��	35	2017/8/19 15:30
113	����	45	
114	³��	55	2017/8/21 15:30
115	����	NULL	
116	������	75	2017/8/23 15:30
117	������	85	2017/8/24 15:30
118	�˽�	NULL	2017/8/25 15:30
119	������	90	
120	СѾ	NULL	2017/8/27 15:30
121	����	80	2017/8/28 15:30
122	��߸	75	
123	��«��	70	2017/8/30 15:30
124	����	NULL	2017/8/31 15:30
125	�繤	NULL	
126	�嶠	NULL	2017/9/2 15:30
127	˾��	50	2017/9/3 15:30
128	������	58	2017/9/4 15:30
129	����	66	2017/9/5 15:30
Time taken: 0.134 seconds, Fetched: 18 row(s)

去所在目錄下轉(zhuǎn)碼,再Load

piconv -f gb2312 -t UTF-8 2.csv > 3.csv
# 在hive中選擇正確的文件Load:
hive> load data local inpath '/export/data/3.csv' into table students;

結(jié)果:

hive> select * from students;
OK
112	小寶	35	2017/8/19 15:30
113	王明	45	
114	魯班	55	2017/8/21 15:30
115	苗苗	NULL	
116	少林寺	75	2017/8/23 15:30
117	體育界	85	2017/8/24 15:30
118	八戒	NULL	2017/8/25 15:30
119	周芷若	90	
120	小丫	NULL	2017/8/27 15:30
121	海寶	80	2017/8/28 15:30
122	哪吒	75	
123	葫蘆娃	70	2017/8/30 15:30
124	丹楓	NULL	2017/8/31 15:30
125	電工	NULL	
126	村長(zhǎng)	NULL	2017/9/2 15:30
127	司機(jī)	50	2017/9/3 15:30
128	王世間	58	2017/9/4 15:30
129	松鼠	66	2017/9/5 15:30
Time taken: 0.106 seconds, Fetched: 18 row(s)

補(bǔ)充:hive導(dǎo)入數(shù)據(jù)出現(xiàn)NULL

在把hdfs上數(shù)據(jù)遷移到hive中的表時(shí),若出現(xiàn)數(shù)據(jù)位NULL,是因?yàn)闆](méi)有指定列分隔符。

由于hive默認(rèn)的分隔符是/u0001(Ctrl+A),為了平滑遷移,需要在創(chuàng)建表格時(shí)指定數(shù)據(jù)的分割符號(hào),語(yǔ)法如下:

hive (default)> create external table et (time BIGINT, userid string, content string, urlrank int, urlnum int, url string)
  > partitioned by (filenum int) 
  > row format delimited fields terminated by '\t'; 

上面創(chuàng)建的是外部表,“導(dǎo)入”數(shù)據(jù)時(shí)可以用load,但若不想進(jìn)行移動(dòng)數(shù)據(jù),就用命令alter來(lái)進(jìn)行指向:

alter table et add partition (filenum=1) location '/input/SogouQueryLog/file1';

注意location后面跟的地址必須是個(gè)目錄,若不是,可以用hdfs fs -mv src dest 進(jìn)行移動(dòng)數(shù)據(jù):

hadoop fs -mv /input/SogouQueryLog/querylog_1 /input/SogouQueryLog/file1

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 代碼詳解django中數(shù)據(jù)庫(kù)設(shè)置

    代碼詳解django中數(shù)據(jù)庫(kù)設(shè)置

    在本篇文章里小編給大家分享了關(guān)于django中數(shù)據(jù)庫(kù)設(shè)置的相關(guān)實(shí)例內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。
    2019-01-01
  • python?matplotlib自定義colorbar顏色條及內(nèi)置色條詳解

    python?matplotlib自定義colorbar顏色條及內(nèi)置色條詳解

    由于自己畫圖的需要想要用一些自定義的顏色來(lái)做一個(gè)colorbar,所以下面這篇文章主要給大家介紹了關(guān)于python?matplotlib自定義colorbar顏色條及內(nèi)置色條的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 利用python實(shí)現(xiàn)短信和電話提醒功能的例子

    利用python實(shí)現(xiàn)短信和電話提醒功能的例子

    今天小編就為大家分享一篇利用python實(shí)現(xiàn)短信和電話提醒功能的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • django實(shí)現(xiàn)類似觸發(fā)器的功能

    django實(shí)現(xiàn)類似觸發(fā)器的功能

    今天小編就為大家分享一篇django實(shí)現(xiàn)類似觸發(fā)器的功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 詳解Python如何生成優(yōu)雅的二維碼

    詳解Python如何生成優(yōu)雅的二維碼

    二維碼作為一種信息傳遞的工具,在當(dāng)今社會(huì)發(fā)揮了重要作用。從手機(jī)用戶登錄到手機(jī)支付,生活的各個(gè)角落都能看到二維碼的存在。下面我們就來(lái)看看Python如何生成一個(gè)優(yōu)雅的二維碼吧
    2022-09-09
  • Python使用Tesseract實(shí)現(xiàn)從圖像中讀取文本

    Python使用Tesseract實(shí)現(xiàn)從圖像中讀取文本

    Tesseract?是一個(gè)基于計(jì)算機(jī)的系統(tǒng),用于光學(xué)字符識(shí)別?(OCR)?和其他圖像到文本處理,本文將介紹如何使用?Python?中的?Tesseract?創(chuàng)建一個(gè)可以從圖像中讀取文本的程序,需要的可以參考下
    2023-11-11
  • Python進(jìn)程池Pool應(yīng)用實(shí)例分析

    Python進(jìn)程池Pool應(yīng)用實(shí)例分析

    這篇文章主要介紹了Python進(jìn)程池Pool應(yīng)用,結(jié)合實(shí)例形式分析了Python進(jìn)程池Pool功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • 詳解Python3 pickle模塊用法

    詳解Python3 pickle模塊用法

    pickle模塊中的兩個(gè)主要函數(shù)是dump()和load(),這篇文章主要介紹了Python3 pickle模塊用法,需要的朋友可以參考下
    2019-09-09
  • python try except 捕獲所有異常的實(shí)例

    python try except 捕獲所有異常的實(shí)例

    今天小編就為大家分享一篇python try except 捕獲所有異常的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python最基本的輸入輸出詳解

    Python最基本的輸入輸出詳解

    這篇文章主要介紹了Python最基本的輸入輸出詳解,文中代基于Python2.x,輸入和輸出是Python學(xué)習(xí)中最基礎(chǔ)的知識(shí),需要的朋友可以參考下
    2015-04-04

最新評(píng)論

两当县| 婺源县| 赫章县| 新乡县| 滁州市| 巧家县| 瓦房店市| 隆尧县| 裕民县| 慈溪市| 蓬溪县| 玉屏| 新昌县| 台前县| 武夷山市| 罗江县| 无棣县| 道孚县| 黑河市| 喀喇| 平江县| 肇源县| 淳化县| 射洪县| 河曲县| 凤冈县| 陈巴尔虎旗| 通海县| 阳山县| 江西省| 西昌市| 乌审旗| 和平县| 齐齐哈尔市| 大关县| 巴里| 乳山市| 任丘市| 万载县| 美姑县| 六枝特区|