1Q: 是否有像相似於phpmyadmin同樣的hive查詢客戶端,能以界面的方式查詢hive語句和導出數據 php
A: 有的,客戶端的話可使用squirrel來鏈接hive,squirrel是一個通用的數據庫查詢客戶端,還有有一個開源項目phphiveadmin也不錯, html
web方式訪問hive,這裏也有一個hive web client(https://github.com/lalaguozhe/hiveweb-1) java
2Q: 執行語句時候,可否控制reducer的個數 git
A: 能夠在執行hive語句以前先 set mapred.reduce.tasks=<number> github
3Q: 是否可能在輸出的時候在結果第一行打印列名 web
A: 能夠在執行hive語句以前先 set hive.cli.print.header=true; sql
4Q: Hive是否支持跨數據庫查詢,好比database arch的table1和database algo的table2 進行join 數據庫
A: 能夠,只要有用戶有這兩張表的select權限便可,用戶須要用「database.table」的方式來指定數據庫下的表 apache
5Q: Hive是否有內置的函數,能夠對輸出的數據進行處理 json
A: Hive提供了豐富的內置函數,參見https://cwiki.apache.org/Hive/languagemanual-udf.html,
用戶也能夠本身實現自定義的UDF方法來知足更復雜的查詢需求
6Q: Hive支持exist in麼?
A: 不支持,可是能夠經過改寫語句達到相同的效果,好比對於查詢語句:
SELECT a.key, a.value FROM a WHERE a.key in (SELECT b.key FROM B);
能夠改寫成:
SELECT a.key, a.val
FROM a LEFT SEMI JOIN b on (a.key = b.key)
PS:上述答案過期了,目前 hive 已經支持 in 查詢了。
http://blog.csdn.net/yfkiss/article/details/8073608
7Q:Hive是否支持本地執行模式
A:Hive支持本地執行模式,當數據量小的時候,本地執行比提交到集羣上執行效率提高很大
set hive.exec.mode.local.auto=true(默認false)
當一個job知足以下條件才能真正使用本地模式:
1.job的輸入數據大小必須小於參數hive.exec.mode.local.auto.inputbytes.max(默認值128MB)
2.job的map處理的文件數大於參數hive.exec.mode.local.auto.input.files.max(默認值4)
3.job的reduce數必須爲0或者1,無論是用戶設置的仍是系統推測出來的
用參數hive.mapred.local.mem(默認0)來設置local mode下mapper和reducer task jvm heap size
8Q: 關鍵詞UNION ALL的用法
A:The number and names of columns returned by each select_statement has to be the same. Otherwise, a schema error is thrown.
UNION ALL兩邊的字段名,和字段數都必須一致,能夠用as xxx來統一字段名,而且目前UNION ALL只能做爲子查詢。
9Q:hive left outer join的問題:where 與 on 條件的區別
http://blog.csdn.net/lalaguozhe/article/details/9498947
10Q:其它技巧請見:
http://my.oschina.net/leejun2005/blog/121945
十一、對於 jar 包調用失敗 NullPointerException 的問題:
FAILED: Error in metadata: java.lang.NullPointerException
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
你可能須要再 hive-site.xml 中添加 jar 的路徑:
具體參考:http://abloz.com/2013/03/28/the-hive-execute-statements-times-nullpointerexception.html
<property> <name> hive.aux.jars.path </name> <value> file:///home/june/soft/hive-0.9.0-bin/lib/hive-json-serde.jar </value> </property>
十二、經過僞列定位出錯的原始文件和行號:http://blog.csdn.net/lalaguozhe/article/details/11467593
一般用戶在HIVE中用SELECT語句出來結果,沒法肯定結果是來自哪一個文件或者具體位置信息,HIVE中考慮到了這點,在Virtual Column虛列中能夠指定三個靜態列:
1. INPUT__FILE__NAME map任務讀入File的全路徑
2. BLOCK__OFFSET__INSIDE__FILE 若是是RCFile或者是SequenceFile塊壓縮格式文件則顯示Block file Offset,也就是當前快在文件的第一個字偏移量,若是是TextFile,顯示當前行的第一個字節在文件中的偏移量
3. ROW__OFFSET__INSIDE__BLOCK RCFile和SequenceFile顯示row number, textfile顯示爲0
注:若要顯示ROW__OFFSET__INSIDE__BLOCK ,必須設置set hive.exec.rowoffset=true;
select hostname, INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE,ROW__OFFSET__INSIDE__BLOCK from t_NginxLog where dt='2013-09-01' limit 10;
REF:
Hive 常見問題(持續更新。。。)
http://blog.csdn.net/lalaguozhe/article/details/9081971
hive 0.10 0.11新增特性綜述
http://blog.csdn.net/lalaguozhe/article/details/11730817
hive0.11升級碰到的坑