Hive 使用嵌套子目录的输入创建表

2023-11-24

我在 HDFS 中的文件路径中有 Avro 格式的数据,例如:/data/logs/[foldername]/[filename].avro。我想在所有这些日志文件上创建一个 Hive 表,即以下形式的所有文件/data/logs/*/*。 (它们都基于相同的 Avro 架构。)

我正在使用标志运行以下查询mapred.input.dir.recursive=true:

CREATE EXTERNAL TABLE default.testtable
  ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
  STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
  LOCATION 'hdfs://.../data/*/*'
  TBLPROPERTIES (
    'avro.schema.url'='hdfs://.../schema.avsc') 

除非我改变,否则桌子最终会是空的LOCATION减少嵌套,即成为'hdfs://.../data/[foldername]/'具有特定的文件夹名称。这对于较少嵌套的路径来说没有问题LOCATION.

我希望能够从所有这些不同的 [foldername] 文件夹中获取数据。如何使递归输入选择在嵌套目录中进一步进行?


使用此 Hive 设置启用递归目录:

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

创建外部表并指定根目录作为位置:

LOCATION 'hdfs://.../data'

您将能够从表位置和所有子目录查询数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 使用嵌套子目录的输入创建表 的相关文章

随机推荐