是否可以仅将Avro文件中的选定列加载到Hive?

时间:2018-08-28 09:42:33

标签: hive avro

我需要将Avro文件加载到配置单元。使用以下内容创建表 创建存储为avro位置'hdfs:// host / pathToData'tblproperties('avro.schema.url'='/ hdfsPathTo / schema.avsc')的外部表tblName;

在表格上进行选择时,出现错误 FOUND NULL,EXPECTED STRING 。是否可以加载少量列并查找导致此错误的列数据?

2 个答案:

答案 0 :(得分:0)

实际上,您首先需要使用AvroSerDe格式创建指向AVRO文件位置的Hive外部表。 在此阶段,什么都没有加载。外部表只是文件上的掩码。 然后,您可以创建一个内部HIVE表并从外部表中加载数据(预期的列)。

答案 1 :(得分:0)

如果您已经拥有AVRO文件,则将文件加载到您选择的目录中的HDFS中。接下来,在目录顶部创建一个外部表。

CREATE EXTERNAL TABLE external_table_name(col1 string, col2 string, col3 string ) STORED AS AVRO LOCATION '<HDFS location>';

接下来,在外部表的顶部创建一个内部配置单元表以加载数据

CREATE TABLE internal_table_name(col2 string, col3 string) AS SELECT col2, col3 FROM external_table_name

您可以使用任何脚本语言或工具的批处理脚本来计划内部表的加载。

希望这会有所帮助:)