hadoop - 可以遞歸地在沒有分區或者編輯配置單元 site.xml的?

  显示原文与译文双语对照的内容
51 3

我有一些web伺服器日誌,我想用配置單元查詢。 在HDFS中,目錄結構如下所示:


/data/access/web1/2014/09
/data/access/web1/2014/09/access-20140901.log
[... etc.. .]
/data/access/web1/2014/10
/data/access/web1/2014/10/access-20141001.log
[... etc.. .]
/data/access/web2/2014/09
/data/access/web2/2014/09/access-20140901.log
[... etc.. .]
/data/access/web2/2014/10
/data/access/web2/2014/10/access-20141001.log
[... etc.. .]

我可以創建外部表:


CREATE EXTERNAL TABLE access(
 host STRING,
 identity STRING,
 user STRING,
 time STRING,
 request STRING,
 status STRING,
 size STRING,
 referer STRING,
 agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" ="([^ ]*) ([^ ]*) ([^ ]*) (-|[[^]]*]) ([^"]*|"[^"]*") (-|[0-9]*) (-|[0-9]*)(?: ([^"]*|"[^"]*") ([^"]*|"[^"]*"))?",
"output.format.string" ="%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s")
LOCATION '/data/access/'

"。"。除非在運行配置單元查詢之前運行以下命令,否則配置單元不會下降到子文件夾:


set hive.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;
set hive.supports.subdirectories=true;
set mapred.input.dir.recursive=true;

我已經看到其他帖子在表級別設置這些屬性( 比如 。 使用 TBLPROPERTIES 創建配置單元外部表的問題:


TBLPROPERTIES ("hive.input.dir.recursive" ="TRUE", 
"hive.mapred.supports.subdirectories" ="TRUE",
"hive.supports.subdirectories" ="TRUE", 
"mapred.input.dir.recursive" ="TRUE");

不幸的是,這對我並不適用: 查詢時,該表不返回任何記錄。 我理解可以在配置單元to中設置這些屬性,但我寧願不會對它的他用戶造成任何影響。

Q ) 是有一種方法可以創建一個表,而不使用分區,使站點更改,或者每次運行 4命令。

时间: 原作者:

109 2

在HDInsight中使用 Hive,在配置單元查詢中創建外部表之前設置了以下屬性,它適用於我。


SET hive.mapred.supports.subdirectories=TRUE;
SET mapred.input.dir.recursive=TRUE;

...