基于文件结构的配置单元表创建

时间:2018-07-07 09:21:07

标签: hadoop hive

我有一个疑问,在HIVE中,有什么方法可以在加载到配置单元仓库或外部表期间创建表。

据我所知,配置单元基于读取模式。因此表结构必须与文件结构同步。但是如果文件很大,并且我们不知道其结构,例如列及其数据类型。

比如何将这些文件加载​​到配置单元表。

因此简而言之,如何在不知道其架构结构的情况下将文件从HDFS加载到HIVE表。

Hive的新手,如果我的理解有误,请原谅。

谢谢

1 个答案:

答案 0 :(得分:0)

通过使用sqoop,您可以在导入数据时创建配置单元表

在导入数据时,请参考this链接以创建配置单元表

(或)

如果您已导入AVRO格式的数据,则可以使用以下命令生成avro模式 / usr / bin / Avro / avro-tools-*。jar ,然后在hive中创建表时使用生成的avro模式,然后hive使用该模式并从HDFS读取数据。

请参考this链接以从avro数据文件中提取架构

(或)

虽然使用sqoop --as-avrodatefile导入数据,然后sqoop在其中创建具有模式的.avsc文件,所以我们可以使用此.avsc文件创建表。

CREATE EXTERNAL TABLE avro_tbl
  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-location>'
  TBLPROPERTIES ('avro.schema.url'='<schema-file>');

(或)

通过使用NiFi导入数据,NiFi使用 ExtractAvroMetadata 处理器以avro格式提取数据,我们可以提取avro模式并存储到HDFS中,并使用此avro模式创建表。

如果要创建ORC格式的表,则可以使用 ConvertAvroToOrc 处理器向流文件添加 hive.ddl 属性,因为我们可以执行ddl语句来创建orc表在蜂巢中。