[英]How does Hive CLI retrieve huge result files from HDFS?
通過 CLI 執行 hive 查詢后,如下所示:
$ hive -e QUERY > output.txt
流程如下圖所示:
==============
Hadoop Cluster
==============
| |
| |
| 2. output RESULT as a single .gz file at HDFS because of 1 reducer
| |
| |
1. QUERY |
| |
| 3. Hive retrieves the RESULT as stream or a whole file ?
| If as a whole file, what happens when file size > memory size ?
| |
| |
===========
Hive Client
===========
|
|
4. Client outputs RESULT to stdout which is redirected to a file
|
|
===========
Output File
===========
我的問題是:如果 HDFS 上的單個結果文件超大,甚至比我的本地物理內存還大,那么 Hive 客戶端如何處理?
Hive 客戶端是否檢索文件
您正在以流的形式獲取結果,因此如果您沒有重定向輸出,則您的過程中不會包含任何臨時文件。 你可以把它想象成在做hadoop fs -cat /THE/RESULT/FILE/OF/YOUR/HIVE/REQUEST
如果結果將是一個大數據,您可以將它們重新放在 hdfs 位置:
$ hive -e QUERY | hadoop fs -put - /HDFS/LOCATION
但是這里你應該注意網絡,因為它可能已經飽和了
另一種選擇是將數據立即存儲到另一個 Hive 表中,這樣 Hive 將為您完成所有工作,並且不會將任何結果流式傳輸/復制到您的本地機器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.