簡體   English   中英

如何將配置單元查詢文件輸出限制為始終在單個文件中

[英]how to constraint hive query file output to be in a single file always

我已經使用下面的查詢創建了一個配置單元表,並使用下面提到的第二個查詢每天將數據插入到該表中

create EXTERNAL table IF NOT EXISTS DB.efficacy
(
product string,
TP_Silent INT,
TP_Active INT,
server_date date
)

ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://hdfsadlproduction/user/DB/Report/efficacy';

Insert INTO DB.efficacy
select 
    product,
    SUM(CASE WHEN verdict = 'TP_Silent' THEN 1 ELSE 0 END ),
    SUM(CASE WHEN verdict = 'TP_Active' THEN 1 ELSE 0 END ) ,
    current_date()
from
    DB.efficacy_raw
group by 
    product
;

問題是每天執行插入查詢時,它基本上都會在hadoop FS中創建一個新文件。 我希望每天將查詢輸出僅附加到同一個文件中,但是Hadoop FS以以下方式包含文件。 000000_0、000000_0_copy_1、000000_0_copy_2

我已使用以下配置單元設置:-

SET hive.execution.engine=mr;
SET tez.queue.name=${queueName};
SET mapreduce.job.queuename=${queueName};
SET mapreduce.map.memory.mb  = 8192;
SET mapreduce.reduce.memory.mb = 8192;
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.parallel = true;
SET hive.exec.parallel.thread.number = 2;
SET mapreduce.input.fileinputformat.split.maxsize=2048000000;
SET mapreduce.input.fileinputformat.split.minsize=2048000000;
SET mapreduce.job.reduces = 20;
SET hadoop.security.credential.provider.path=jceks://hdfs/user/efficacy/s3-access/efficacy.jceks;
set hive.vectorized.execution.enabled=false;
set hive.enforce.bucketmapjoin=false;
set hive.optimize.bucketmapjoin.sortedmerge=false;
set hive.enforce.sortmergebucketmapjoin=false;
set hive.optimize.bucketmapjoin=false;
set hive.exec.dynamic.partition.mode=nostrict;
set hive.exec.compress.intermediate=false;
set hive.exec.compress.output=false;
**set hive.exec.reducers.max=1;**

我是蜂巢和Hadoop時代的初學者,所以請原諒。 任何幫助將不勝感激

注意:-我正在使用Hadoop 2.7.3.2.5.0.55-1

我沒有看到任何可用的直接機制或配置單元設置,它們會在查詢結束時自動合並所有小文件。 當前,存儲為文本文件的文件不支持小文件的串聯。

根據我帖子中“ leftjoin”的評論,我以ORC格式創建了表,然后使用CONCATENATE配置單元查詢將所有小文件合並為一個大文件。

然后,我使用下面的配置單元查詢將數據從這個大的ORC文件導出到單個文本文件,並且能夠使用此導出的文本文件完成我的任務。

hive#INSERT OVERWRITE DIRECTORY '<Hdfs-Directory-Path>'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
SELECT * FROM default.foo;

禮貌:-https: //community.hortonworks.com/questions/144122/convert-orc-table-data-into-csv.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM