是否可以仅将选定列从avro文件加载到配置单元?

eyh26e7m  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(272)

我需要将avro文件加载到配置单元。使用以下命令创建表create external table tblname stored as avro location'hdfs://host/pathtodata'tblproperty('avro.schema.url'='/hdfspathto/schema.avsc');
在表上执行select操作时,发现一个错误为null,应为字符串。是否可以加载几个列并找出导致此错误的列数据?

dbf7pr2w

dbf7pr2w1#

如果您已经有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

您可以使用任何脚本语言或工具中的批处理脚本来计划内部表加载。
希望这有帮助:)

qyuhtwio

qyuhtwio2#

实际上,首先需要创建一个hive外部表,指向avro文件的位置,并使用avroserde格式。在这个阶段,没有加载任何内容。外部表只是文件上的一个掩码。然后可以创建一个内部配置单元表并从外部配置单元表加载数据(预期的列)。

相关问题