面臨的實際問題是從hive導出部分數據到本地,存儲格式不限,但只要後續能讀就行。
1-先在北理鏡像找到,下載你要的版本,我下的是237,然後再服務器解壓tar
2-重命名爲hive-2.3.7,此時直接用hive命令沒用,
3-將hive地址寫入環境然後用source完成,或者直接export設置爲hive的地址
搞了半天結果也沒搞成功。算了。
直接用線上服務器得了,hive後就進去了,主要是怕我瞎操作把線上的服務整掛了。
直接入門吧。常用命令如下:
show databases;
use default;
desc student;
show **顯示數據庫,然後就會顯示很多個數據庫名字,
use **使用哪個數據庫。但我發現並沒有卵用。
desc **顯示錶結構。
顯示hive存儲位置,hdfs,直接
show create table student;
下面導出數據
1-會不會出現內存佔滿的情況,也就是說導出的數據太多了。能不能導出部分數據,怎麼設置啊?
select * from student limit 1;
展示其中的一行數據。這樣就不會卡死了吧,事實上還是很慢的,20s這是真的很慢
2-導出數據到本地
insert overwrite local directory '/data/mydata' select * from student
然後我的程序就給我出現了個問題,感覺好可怕啊。
FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. GC overhead limit exceeded
我在目錄下沒有發現數據,好可怕啊。
再試一次吧,從中選取某列,即指定列
3-大佬說要分區,這個分區讓我不知是什麼鬼,然而就是加個關鍵詞,。。。。這就是分區。
加上關鍵詞where及分區關鍵字即可。
4-兩個表怎麼關聯啊?問題源於,一個表的內容和另一個表有關,只下載一個表的東西也沒啥用。同事大佬給我了關鍵字:關聯
羣裏大佬告訴我join,我看了下資料的確如此。我試試。
然而又是慢死了,我加分區了啊,我加關聯了啊,擋不住啊。結果是報錯了。尷尬。
Query ID = xu80e94
Total jobs = 1
Stage-1 is selected by condition resolver.
Launching Job 1 out of 1
Number of reduce tasks not specified. Estimated from input data size: 1099
In order to change the average load for a reducer (in bytes):
set hive.reducer=<number>
In order to limit the maximum number of reducers:
set hive.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
ctrl+c退出了
發現左右連接,試試看。結果同樣是慢死了。
不加where也是死了,woc咋回事啊
待續吧明天。。
For Video Recommendation in Deep learning QQ Group 277356808
For Speech, Image, Video in deep learning QQ Group 868373192
I'm here waiting for you