Hadoop ORC格式的配置单元外部表-如何将ORC文件中的列名映射到配置单元表列?

Hadoop ORC格式的配置单元外部表-如何将ORC文件中的列名映射到配置单元表列?,hadoop,hive,orc,Hadoop,Hive,Orc,在使用ORC文件格式的配置单元中,是否有独立于列顺序将列名映射到配置单元表列的方法 orc文件的示例架构: root |-- age: string (nullable = true) |-- first_name: string (nullable = true) |-- last_name: string (nullable = true) |-- salary: string (nullable = true) |-- load_date: date (nullable = t

在使用ORC文件格式的配置单元中,是否有独立于列顺序将列名映射到配置单元表列的方法

orc文件的示例架构:

root
 |-- age: string (nullable = true)
 |-- first_name: string (nullable = true)
 |-- last_name: string (nullable = true)
 |-- salary: string (nullable = true) 
 |-- load_date: date (nullable = true) 
所需配置单元表列顺序:

first_name
last_name
age
salary
但是,当我创建具有所需列顺序的表时,数据没有正确对齐。配置单元根据列顺序而不是列名获取数据。这适用于拼花地板格式,其中Hive能够根据列名选择正确的顺序。任何解决此问题的建议都将受到高度赞赏

我没有选择更改orc文件模式,因为它是由外部进程创建的。也不想创建任何中间临时表和插入覆盖选项

Hive Table DDL:

create external table if not exists test.user_profile(
first_name String,
last_name String,
age String,
salary String)
PARTITIONED BY (load_date String)
stored as orc
Location '/test/user_profile_data/';

Hive2.1中的ORC支持模式演化。 在Hive2.3.x中,通过设置此属性
orc.force.positional.evolution

请注意,所述属性的默认值为false

配置单元2.1中的ORC支持模式演化。 在Hive2.3.x中,通过设置此属性
orc.force.positional.evolution
请注意,所述属性的默认值为false