hive SQL 產生結果檔案的問題
- 每次hive sql執行完會產生幾個結果檔案?
- 預設的hive結果檔名叫什麼?
- 這些結果檔案我們可以控制麼,例如改名?個數?
好的下面來解答一下:
- 一般來說,每次hivesql執行完畢之後只會生成一個結果檔案,名稱預設為000000_0,如果存在類似於insert into這種語句則每一次insert into 成功之後都會產生一個結果檔案,類似於000000_0_copy_1,多次insert into 產生的檔案依次類推。
- 預設檔名為000000_0,000000_0_copy_1以及類似的000000_X等
- 這些檔名是hadoop和hive預設產生的一般的話是不能更改的,修改的話需要從原始碼入手或者通過hadoop命令的形式直接去操作hdfs檔案,建議後者;結果檔案的個數這個就有點複雜了,涉及到具體的sql語句和reducer的個數以及其他配置。
下面來簡單分析下第三個問題:
與reducer個數有關:
多個reducer就會有多個結果檔案,預設hive會自己去設定reducer的個數,reduce個數的設定極大影響任務執行效率,不指定reduce個數的情況下,Hive會猜測確定一個reduce個數,可以在hive執行sql的時,打印出來,如下:
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapred.reduce.tasks=<number>
reduce數量由以下三個引數決定:
mapred.reduce.tasks(強制指定reduce的任務數量)
hive.exec.reducers.bytes.per.reducer(每個reduce任務處理的資料量,預設為1000^3=1G)
hive.exec.reducers.max(每個任務最大的reduce數,預設為999)
計算reducer數的公式很簡單N=min( hive.exec.reducers.max ,總輸入資料量/ hive.exec.reducers.bytes.per.reducer )
如果reduce的輸入(map的輸出)總大小不超過1G,那麼只會有一個reduce任務。
只有一個reduce的場景:
a、沒有group by 的彙總
b、order by
c、笛卡爾積
如何更改reducer個數,可以參考文末給出的參考連結,感謝連結的作者
與SQL有關:
sql有insert into語句,那麼每次insert 都會產生一個檔案
sql中有order by關鍵字,只能由一個reducer來處理,所以只會產生一個結果檔案
沒有group by的彙總,比如把select pt,count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04' group by pt; 寫成 select count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04',在輸入小於hive.exec.reducers.bytes.per.reducer的情況下後者只有一個reducer
等等
相關推薦
hive SQL 產生結果檔案的問題
每次hive sql執行完會產生幾個結果檔案? 預設的hive結果檔名叫什麼? 這些結果檔案我們可以控制麼,例如改名?個數? 好的下面來解答一下: 一般來說,每次hivesql執行完畢之後只會生成一個結果檔案,名稱預設為000000_0,如果存在類似於insert in
hive SQL查詢結果新增行號
用視窗函式可以解決這個問題: 例:select row_number() over(order by user_id desc) ,tab.* from dws_user_visit_month1 as tab limit 20; 結果:
hive SQL查詢結果添加行號
添加 desc bubuko row 14. height 上下 sel 問題: 用窗口函數可以解決這個問題: 例:select row_number() over(order by user_id desc) ,tab.* from dws_user_visit_mo
Hive SQL查詢結果寫入指定hdfs路徑
將hive查詢結果寫入指定hdfs路徑下:set mapred.reduce.tasks = 1; insert overwrite directory '/xx/xx/' ROW FORMAT DELIMITED FIELDS TERMINATED BY '~' selec
在xshell中執行hive sql 並將結果寫入另一個txt文字中
在xshell 中進入資料夾:vi test.sql然後將要執行的sql輸入,注意開頭不能有空格寫完後按Esc鍵,輸入:x儲存並退出輸入下面程式碼:/usr/bin/beeline -u "jdbc:hive2://dsrv1.heracles.sohuno.com:1000
hive sql給查詢結果加上一列序號
現有一個表student: select * from student; 然後加上一列序號: select row_number() over(partition by 1) as xuhao, a.* from student a; 得到結果:
postgresql匯出sql執行結果到檔案的方法
postgresql中可以匯出某個sql的執行結果到檔案中,方法是在psql中首先執行\o filename,然後執行要匯出結果的sql語句即可,可以看到剛剛執行的sql執行結果已經在filename中了。方便,強大,贊! 舉個例子: psql test_db;
便捷輸出sql查詢結果為TXT/CSV檔案
1. 建立儲存過程sql_to_csv create or replace procedure sql_to_csv(p_query in varchar2, --sql query statement p_dir in varchar2,
EF執行SQL語句 結果和直接在Sqlserver中執行結果不一致
enume 出了 text con query context png syn raw 先說問題 直接執行sql的結果 var result = base.Context.Customers.SqlQuery(sql); sql 語句是打斷點取得的,連接的也
008-Hadoop Hive sql語法詳解3-DML 操作:元數據存儲
pan 查詢 寫入 所有 not insert語句 int 寫入文件 文件系統 一、概述 hive不支持用insert語句一條一條的進行插入操作,也不支持update操作。數據是以load的方式加載到建立好的表中。數據一旦導入就不可以修改。 DML包括:INSERT插入
數據遷移過程中hive sql調優
操作 reduce mapred set mon 事情 clas 過程 高效 本文記錄的是,在數據處理過程中,遇到了一個sql執行很慢,對一些大型的hive表還會出現OOM,一步一步通過參數的設置和sql優化,將其調優的過程。 先上sql select t1.create
記一次偽*sql查詢結果不一致的
vid eight frame and sna parameter -exec video http 調試代碼發現,兩個操作最後都會調用同一個方法。傳入的參數一致,查詢結果卻不一致。 直接說問題原因:我的兩個操作是aop環繞通知先拿到傳入參數以後,校驗是否需要往另一張表中插
017-Hadoop Hive sql語法詳解7-去重排序、數據傾斜
col 去重排序 sel cluster 可能 更多 分發 指定 clust 一、數據去重排序 1.1、去重 distinct與group by 盡量避免使用distinct進行排重,特別是大表操作,用group by代替 -- 不建議 selec
016-Hadoop Hive sql語法詳解6-job輸入輸出優化、數據剪裁、減少job數、動態分區
分享 hive table 取數 nbsp put union 正在 style 一、job輸入輸出優化 善用muti-insert、union all,不同表的union all相當於multiple inputs,同一個表的union all,相當map一次輸出多條
將sql 查詢結果導出到excel
過程 book 查詢 color shell 業務 文件的 arch exce 在平時工作中經常會遇到,sql 查詢數據之後需要發送給業務人員,每次都手工執行腳本然後拷貝數據到excel中,比較耗時耗力,可以考慮自動執行查詢並將結果郵件發送出來。 分兩步實現: 1、執行
SQL 操作結果集 -並集、差集、交集、結果集排序
nbsp 分享 字段名 運算 語法 http 測試數據 結構 put 操作結果集 為了配合測試,特地建了兩個表,並且添加了一些測試數據,其中重復記錄為東吳的人物。 表:Person_1魏國人物 表:Person_2蜀國人物 A、Union形成並
sql查詢結果存入DataTable,然後從DataTable取數據
結果 ble body 查詢 取數 select columns class span for (int i = 0; i < dt.Rows.Count; i++) { string s = "select
hibernate使用setResultTransformer()將SQL查詢結果放入集合中
-h cal 們的 gpo ict dds eas find ans 在平時開發中Hibernate提供的hql基本能夠滿足我們的日常需求。但是在有些特殊的情況下,還是需要使用原生的sql,並且希望sql查詢出來的結果能夠綁定到pojo上。hibernate API中的cr
Hive sql和Presto sql的一些對比
ets ive 對比 簡單的 markdown pac pin down ring 最近由於工作上和生活上的一些事兒好久沒來博客園了,但是寫博客的習慣還是得堅持,新的一年需要更加努力,困知勉行,終身學習,每天都保持空杯心態.廢話不說,寫一些最近使用到的Presto SQL和
篩選出sql 查詢結果中 不包含某個字符
title www. char kdt nbsp ofo pos ali ati select * from table1 where patindex(‘%關鍵字%‘ , aa) = 0 select * from table1 where charindex(‘關鍵字