impala增加字段,hsql查不到数据

impala增加字段,插入数据后直接查看文件有值,impala查询是有值的,但是hsq查出来就没有值!
Parquet格式的表,在重命名表的列名,或新增列名后,查询重名的列数据时显示当前列所有值为NULL。
原因:
在Hive和Impala中,默认访问Parquet数据文件的方式不一样,Hive是以列名,Impala是以位置。

解决方法:不适用于所有hive版本 > hive-3.1.3 支持,Jira:HIVE-6938
1.在Hive的当前会话设置-临时
set parquet.column.index.access=true;

2.修改表的属性
hive默认的读取parquet文件是按照名称读取的(orc默认是按序列号读取的),
这个参数的功能是使hive读取parquet文件时使用序列号读取
ALTER TABLE XXX SET TBLPROPERTIES (‘parquet.column.index.access’=‘true’);

3.不支持版本处理方案:
直接删除表、重新建表,将新增字段在建表里。

Impala的元数据异步刷新可能会导致查询不到数据的问题。这通常是由于在Impala中创建或修改了、分区等元数据,但元数据尚未被完全刷新,因此查询无法找到预期的数据。解决这个问题的方法是等待元数据刷新完成,或者手动刷新元数据。 等待元数据刷新完成 Impala会定期刷新元数据,通常每隔一段间就会执行一次。如果您在Impala中创建或修改了元数据,请等待一段间,让Impala自动刷新元数据。在等待期间,您可以尝试重新执行查询,看看是否能够找到预期的数据。 手动刷新元数据 如果您不等待Impala自动刷新元数据,您可以手动刷新元数据。有两种方法可以手动刷新元数据: 1. 使用INVALIDATE METADATA命令 在Impala Shell中运行以下命令可以手动刷新元数据: ``` INVALIDATE METADATA; ``` 该命令会使Impala重新加载所有元数据,包括、分区等。这个过程可能需要一些间,取决于您的数据规模和系统性能。 2. 使用REFRESH命令 如果您只是修改了某个或分区的元数据,可以使用REFRESH命令手动刷新指定的或分区。例如,如果您修改了my_table的元数据,可以使用以下命令手动刷新该: ``` REFRESH my_table; ``` 该命令会使Impala重新加载指定的元数据,从而使查询可以找到预期的数据。 总结 Impala的元数据异步刷新可能会导致查询不到数据的问题。为了解决这个问题,您可以等待Impala自动刷新元数据,或者手动使用INVALIDATE METADATA或REFRESH命令刷新元数据。无论选择哪种方法,都需要一定的间和系统资源来完成元数据刷新。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值