hive從入門到入門

面臨的實際問題是從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

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章