① 如何在Java中執行Hive命令或HiveQL
String sql="show tables; select * from test_tb limit 10";
List<String> command = new ArrayList<String>();
command.add("hive");
command.add("-e");
command.add(sql);
List<String> results = new ArrayList<String>();
ProcessBuilder hiveProcessBuilder = new ProcessBuilder(command);
hiveProcess = hiveProcessBuilder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(
hiveProcess.getInputStream()));
String data = null;
while ((data = br.readLine()) != null) {
results.add(data);
}
② hive中quit和exit的區別
執行一個查詢
$HIVE_HOME/bin/hive -e 'select a.col from tab1 a'
之後過程中,會在終端上顯示maprece的進度,執行完畢後,最後把查詢結果輸出到終端上,接著hive進程退出,不會進入交互模式。
使用靜音模式執行一個查詢
$HIVE_HOME/bin/hive -S -e 'select a.col from tab1 a'
加入-S,終端上的輸出不會有maprece的進度,執行完畢,只會把查詢結果輸出到終端上。這個靜音模式很實用,,通過第三方程序調用,第三方程序通過hive的標准輸出獲取結果集。
使用靜音模式執行一個查詢,把結果集導出
$HIVE_HOME/bin/hive -S -e 'select a.col from tab1 a' > tab1.csv
不進入交互模式,執行一個hive script
$HIVE_HOME/bin/hive -f /home/my/hive-script.sql
hive-script.sql是使用hive sql語法編寫的腳本文件,執行的過程和-e類似,區別是從文件載入sql.
但是sql文件,對於bash來說,不能使用變數,而使用-e的方式,可以在bash里使用變數(但是對於sql文件的形式,可以利用程序基於變數動態生成sql文件,再執行,稍微麻煩點)。
這里可以和靜音模式-S聯合使用,通過第三方程序調用,第三方程序通過hive的標准輸出獲取結果集。
③ hive起不來,命令行輸hive時,報錯信息如下:
可以再/hive/bin目錄下輸入 hive -hiveconf hive.root.logger=debug,console 然後再輸入你報錯的hql語句,會有更詳細的錯誤提示,這個調試模式很管用的,希望能幫上。
④ 如何徹底刪除hive以及配置好的環境變數
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
搜索博文/帖子/用戶
登錄
奇子君
關注
hive 設置環境變數的方法總結 原創
2020-02-19 14:02:47
奇子君
碼齡10年
關注
Hive提供三種可以改變環境變數的方法:
1.配置文件:修改${HIVE_HOME}/conf/hive-site.xml配置文件;
在Hive中,所有的默認配置都在${HIVE_HOME}/conf/hive-default.xml文件中,如果需要對默認的配置進行修改,可以創建一個hive-site.xml文件,放在${HIVE_HOME}/conf目錄下。裡面可以對一些配置進行個性化設定。在hive-site.xml的格式如下:
絕大多少配置都是在xml文件裡面配置的,這里做的配置都全局用戶都生效。用戶自定義配置會覆蓋默認配置。另外,Hive也會讀入Hadoop的配置,因為Hive是作為Hadoop的客戶端啟動的,Hive的配置會覆蓋Hadoop的配置。
2. 命令行參數:在啟動Hive cli的時候進行配置,可以在命令行添加-hiveconf param=value來設定參數,例如:
hive --hiveconf maprece.job.queuename=queue
在Hive中所有MapRece作業都提交到隊列queue中。這一設定對本次啟動的會話有效,下次啟動需要重新配置。
3. 參數申明:在已經進入cli時進行參數聲明,可以在HQL中使用SET關鍵字設定參數,例如:
hive> set maprece.job.queuename=queue;
這種配置也是對本次啟動的會話有效,下次啟動需要重新配置。
上述三種設定方式的優先順序依次遞增。即參數聲明覆蓋命令行參數,命令行參數覆蓋配置文件設定。
⑤ 程序中的Hive具體是干什麼用的呢
Hive是基於Hadoop平台的數倉工具,具有海量數據存儲、水平可擴展、離線批量處理的優點,解決了傳統關系型數倉不能支持海量數據存儲、水平可擴展性差等問題,但是由於Hive數據存儲和數據處理是依賴於HDFS和MapRece,因此在Hive進行數據離線批量處理時,需將查詢語言先轉換成MR任務,由MR批量處理返回結果,所以Hive沒法滿足數據實時查詢分析的需求。
Hive是由FaceBook研發並開源,當時FaceBook使用Oracle作為數倉,由於數據量越來越大,Oracle數倉性能越來越差,沒法實現海量數據的離線批量分析,因此基於Hadoop研發Hive,並開源給Apacha。
由於Hive不能實現數據實時查詢交互,Hbase可提供實時在線查詢能力,因此Hive和Hbase形成了良性互補。Hbase因為其海量數據存儲、水平擴展、批量數據處理等優點,也得到了廣泛應用。
Pig與HIVE工具類似,都可以用類sql語言對數據進行處理。但是他們應用場景有區別,Pig用於數據倉庫數據的ETL,HIVE用於數倉數據分析。
從架構圖當中,可看出Hive並沒有完成數據的存儲和處理,它是由HDFS完成數據存儲,MR完成數據處理,其只是提供了用戶查詢語言的能力。Hive支持類sql語言,這種SQL稱為Hivesql。用戶可用Hivesql語言查詢,其驅動可將Hivesql語言轉換成MR任務,完成數據處理。
【Hive的訪問介面】
CLI:是hive提供的命令行工具
HWI:是Hive的web訪問介面
JDBC/ODBC:是兩種的標準的應用程序編程訪問介面
Thrift Server:提供異構語言,進行遠程RPC調用Hive的能力。
因此Hiv具備豐富的訪問介面能力,幾乎能滿足各種開發應用場景需求。
【Driver】
是HIVE比較核心的驅動模塊,包含編譯器、優化器、執行器,職責為把用戶輸入的Hivesql轉換成MR數據處理任務
【Metastore】
是HIVE的元數據存儲模塊,數據的訪問和查找,必須要先訪問元數據。Hive中的元數據一般使用單獨的關系型資料庫存儲,常用的是Mysql,為了確保高可用,Mysql元資料庫還需主備部署。
架構圖上面Karmasphere、Hue、Qubole也是訪問HIVE的工具,其中Qubole可遠程訪問HIVE,相當於HIVE作為一種公有雲服務,用戶可通過互聯網訪問Hive服務。
Hive在使用過程中出現了一些不穩定問題,由此發展出了Hive HA機制,
⑥ hive.cmd閃退
1、通常這樣的問題應該是系統環境變數異常了引起的。逐一比對正確的Path變數名下的變數值。
2、但是,這個個案比較特殊,原因是不良程序修改了注冊表所致。在開始-運行中輸入:regedit按回車鍵之後,打開注冊表編輯器。
3、依次打開計算機HKEY-CURRENT-USER。
4、HKEY_CURRENT_USERSOFTWARE。
5、SOFTWAREMicrosoft。
6、MicrosoftCommandProcessor再看右邊窗口,保持現有數據,刪除多餘的項目即可。
7、其中有一條是EXIT(退出)的項目,整條刪除即可。這就是cmd打開後閃退的解決方法。
⑦ Hive是什麼
此外,hive也支持熟悉map-rece的開發者使用map-rece程序對數據做更加復雜的分析。 hive可以很好的結合thrift和控制分隔符,也支持用戶自定義分隔符。 hive基於hadoop,hadoop是批處理系統,不能保存低延遲,因此,hive的查詢也不能保證低延遲。 hive的工作模式是:提交一個任務,等到任務結束時被通知,而不是實時查詢。相對應的是,類似於Oracle這樣的系統當運行於小數據集的時候,響應非常快,可當處理的數據集非常大的時候,可能需要數小時。需要說明的是,hive即使在很小的數據集上運行,也可能需要數分鍾才能完成。 低延遲不是hive追求的首要目標。
⑧ hive中怎麼退出所連接的資料庫
1、hive 命令行模式,直接輸入/hive/bin/hive的執行程序,或者輸入 hive --service cli
用於linux平台命令行查詢,查詢語句基本跟mysql查詢語句類似
2、 hive web界面的 (埠號9999) 啟動方式
hive –service hwi &
用於通過瀏覽器來訪問hive,感覺沒多大用途
⑨ hive 為什麼不能退格
...首先 這個問題跟hive無關
然後 題主你在執行hive命令進入控制台的之後 再退出來 是否能用backspace? 調用hive之前 有沒有source過某個文件導致沒有backspace了?
⑩ hiveserver2 怎麼停止
CDH4 Hive
(2013-10-23 09:29:52)
轉載▼
標簽:
cdh4
hive
分類: Hive
關於Hive
Apache Hive是建立在Hadoop之上強大的數據倉庫應用程序;你可以使用Hive QL(一種類似於SQL的語言)來訪問你的數據。你可以在安裝有Hive的客戶機上提交你的作業,你不需要將Hive安裝在Hadoop集群的任何節點上。
HiveServer2
CDH4.1中,你可以部署HiveServer2,HiveServer2是HiveServer的改進版本,它提供新的Thrift API來處理JDBC或者ODBC客戶端,Kerberos身份驗證,多個客戶端並發。HiveServer2還提供了新的CLI-BeeLine。
Cloudera推薦安裝使用HiveServer2。(當你需要時,仍然可以使用原來的HiveServer,並且同時運行HiveServer2)
升級Hive
在所有有運行Hive 的主機上升級Hive:服務端和客戶端
注意事項:查看CDH4中包含的Hive版本,檢查版本和包信息,對於新的和已更改組件的重要信息可以查看CDH4 Release Notes。
升級Hive從CDH3到CDH4
注意事項:如果你已經執行卸載CDH3和所有組件的步驟,按照這里的描述升級CDH3到CDH4,你可以跳過步驟1,繼續安裝CDH4版的Hive。
Step 1:Remove Hive
警告:確保沒有hive進程在運行,如果在升級過程中有Hive進程在運行,新版本將不能正常工作。
1.退出Hive控制台,確保沒有Hive腳本在運行。
2.停止正在運行的HiveServer進程,如果HiveServer作為守護進程運行,用洗面的命令停止服務。
$ sudo service hive-server stop
如果HiveServer從命令行運行的,用<CTRL>-c 停止它
3.停止metastore服務,如果metastore作為守護進程運行,用下面的命令停止服務
$ sudo service hive-metastore stop
如果metastore從命令行運行的,那用<CTRL>-c 停止它