hive读取orc表,列为null,解决方案

in case of orc data reader schema passed by hive are all small cases and if
the column name stored in the file has any uppercase, it will return null
values for those columns even if the data is present in the file.
Column name matching while schema evolution should be case unaware.
we need to pass config for same from hive. the
config(orc.schema.evolution.case.sensitive) in orc will be exposed by
https://issues.apache.org/jira/browse/ORC-264

上述问题摘录自https://www.mail-archive.com/issues@hive.apache.org/msg99436.html

简单描述下上面英文描述的问题就是 在hive2.x版本以后orc格式的表,写入时候如果orc的schema 有的字段是大写,那么hive在读取schema时候,这个字段就会被读成null,所以建议设置参数
如图所示:
在这里插入图片描述
查看orc的schema

hive --orcfiledump oss://day=20191220/hour=03/part-00000-aaef271c-dabf-49fb-9899-2960bad0a341-c000.snappy.orc

如图:
在这里插入图片描述

orc.schema.evolution.case.sensitive

但是具体怎么设置,网上中英文都找不到案例
于是自作主张如下设置

hive --hiveconf orc.schema.evolution.case.sensitive

结果不行
又如下设置

hive --hiveconf orc.schema.evolution.case.sensitive=true

结果还是不行

发现在写入orc文件的时候
dataframe的schema是大小写,导致无法识别元数据,知道是这个原因,那就好解决了
直接schema的列名用 tolowerCase 强转成小写,问题就迎刃而解了
修改完后的orc文件用

hive --orcfiledump oss://gateway/t_dsp_bid_detail_tbl/day=20191220/hour=04/part-00000-aaef271c-dabf-49fb-9899-2960bad0a341-c000.snappy.orc

查看结果如下:
在这里插入图片描述

查询 就不会出现null列了
如图:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Flink SQL中连接并读取Hive,您可以使用Hive catalog或Flink JDBC连接器的方法。 使用Hive catalog的方法如下: 1. 首先,您需要在Flink SQL Stream Builder中注册Hive catalog。这可以通过在Flink SQL CLI或Flink SQL客户端中执行相应的DDL语句来完成。\[3\] 2. 注册完成后,您可以在Flink SQL中使用Hive。您可以通过在SQL查询中使用类似于"SELECT * FROM hive_table"的语句来读取Hive的数据。\[1\] 使用Flink JDBC连接器的方法如下: 1. 首先,您需要确保Hive的数据可以通过JDBC连接器访问。这可以通过在Flink的配置文件中配置Hive JDBC连接器的相关信息来实现。\[2\] 2. 配置完成后,您可以在Flink SQL中使用JDBC连接器来读取Hive。您可以通过在SQL查询中使用类似于"SELECT * FROM jdbc_table"的语句来读取Hive的数据。 无论您选择使用Hive catalog还是JDBC连接器,都可以在Flink SQL中连接并读取Hive的数据。具体选择取决于您的需求和环境。 #### 引用[.reference_title] - *1* *2* *3* [通过 Flink SQL 使用 Hive 丰富流](https://blog.csdn.net/wang_x_f911/article/details/127980900)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值