亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HIVE外部表為什么比內部表要慢

發布時間:2021-12-10 11:05:29 來源:億速云 閱讀:554 作者:小新 欄目:大數據

這篇文章主要為大家展示了“HIVE外部表為什么比內部表要慢”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“HIVE外部表為什么比內部表要慢”這篇文章吧。

 以HBASE為例,如果把HIVE作為一個HBASE客戶端的查詢工具,語句轉義之后發到HBASE,HBASE返回數據,按理不至于慢很多,畢竟只多做了一層SQL到HBASE的語句的轉義。 既然事實卻是慢,那么我們就可以認為HIVE外部表不能這么理解,應該還有其他的東西在阻礙HIVE外部表的性能,畢竟HIVE是走MAPREDUCE。

hbase(main):003:0> count 't_device_fault_statistics'
557 row(s) in 0.2890 seconds

=> 557

這里用一個只有557條數據的HBASE表來測試,看看HIVE外部表到底和HBASE本身的客戶端有哪些區別。 準別工作如下:

1. 打開HBASE UI,  http://hostname:60010/table.jsp?name=t_device_fault_statistics   這里有一個指標是requests(起初,我覺得這個是請求次數,測試之后我認為這是查詢請求最后獲得的行數, 因為你隨便查詢一個不存在的數字,你會發現這個數字是不會增長的,但是如果你查詢輸出10條數據,這個數字就會增長10)

2. 寫一個JAVA程序,或者通過HBASE客戶端也行

3. 建立HBASE的HIVE外部表

完成以上工作就開始測試,整個猜想是, 比較通過HIVE外部表訪問之后requests增長和通過Hbase本身的API或者客戶端訪問的requests增長的區別。

當前requests: 74555

以下是程序訪問,通過匹配ROWKEY的前綴,看看requests增長:

      val scan = new Scan()
      scan.setCaching(100)
      scan.setRowPrefixFilter(Bytes.toBytes("i517T5100"))

訪問之后的requests為:74559 ,  增長了4, 返回結果也為4, 那么我可以這么理解,通過i517T5100這個ROWKEY前綴訪問,獲取4條記錄,requests也增長了4

以上程序我可以改寫為SQL: select count(*) from t_device_fault_statistics where id like 'i517T5100%' 

訪問之后,返回結果為4, 我們來看看requests問為多少:75216,  75216-74559=657 ( 我測試很多次,表的實際行是557,但是每次這里增長657,我不確定為什么不是557,而是657)

這里暫時不管為什么不是557,而是實際的657, 總之可以看到,通過訪問ROWKEY前綴,HBASE客戶端只有4個requests增長,但是HIVE外部表有657。 能否這么理解,HIVE通過SQL查詢是把
數據全部查詢出來,然后通過HIVE本身來過濾,而HBASE查詢是在服務器上過濾的,所以HIVE查詢之后requests增長為表的行數. 


經過測試,除了SQL條件采用 等于 rowkey的方式,requests增長會和Hbase客戶端一樣,其他的一定是全表掃描。 

從上面的測試,HIVE外部表除了使用等于ROWKEY方式不慢,其他的查詢應該是從HBASE加載全部數據,然后通過HIVE本身來過濾。奇怪的是等于ROWKEY方式為什么HIVE就可以通過HBASE過濾,而不是依靠HIVE自己本身呢?  說明等于ROWKEY的方式,HIVE可以直接轉義成HBASE執行語句,定位一條數據,而其他方式HIVE無能為力,只能全表。

以上是“HIVE外部表為什么比內部表要慢”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁波市| 吴桥县| 小金县| 牙克石市| 含山县| 建始县| 山东省| 马龙县| 宜阳县| 绍兴县| 二连浩特市| 维西| 滨州市| 海伦市| 南丹县| 都安| 大石桥市| 梁河县| 吉木萨尔县| 九龙县| 曲沃县| 栾川县| 英山县| 营山县| 黄龙县| 贵南县| 延庆县| 城步| 汉阴县| 万源市| 湘阴县| 黎川县| 青冈县| 新巴尔虎右旗| 祁阳县| 都昌县| 沙田区| 荣昌县| 商河县| 噶尔县| 广饶县|