这个其实还是挺乱的,我看了下hive-storage-api貌似也不是肯定没用。
我基于flink的data-stream-api的filesink方式写hive,orc格式文件。引入的是flink-orc包,内部依赖hive-storage-api中。这个我刚刚尝试去除换成hive-exec等,结果不行,因为少了部分类,比如
MapColumnVector等。
不过之前测试过写入没问题。所以看样子我data-stream写hive的时候是需要依赖flink-orc包,也就简介引入了hive-storage-api包,这是必须的。
基于这个回答,还有另一个英文email中有个人说我的hive-common和hive-exec不一致的问题。
我hive版本应该是1.2.1,我看spark部分依赖的1.2.1的包。
此外,关于hive配置。此处我需要问下,flink集群需要有hive的依赖嘛是?我flink集群本身没加任何hive依赖。
只是在flink的sql-client启动的时候通过-l参数指定了部分包,这个包是基于flink官网文档给的那个flink-sql-connector-hive-1.2.2。
此外,在flink-client端的conf中(即classpath中)加了hive-site.xml配置,内部也仅指定了最基础的一些关于metastore的连接信息。
Rui Li 于2021年1月25日周一
你好,
关于分区字段的filter,flink与hive的隐式类型转换规则不同,建议在写where条件时按照分区字段的类型来指定常量。
关于读ORC的异常,请问你的hive版本是多少呢?另外hive配置中是否指定过hive.txn.valid.txns参数?
On Sun, Jan 24, 2021 at 6:45 AM 赵一旦 wrote:
> 补充(1)FlinkSQL的查询,对于分区字符串字段貌似必须加'',不加就查询不到?如上hour=02这种直接导致no more split。
>
此外,还有我发现Parquet格式是可以的,顺便看了下FlinkStreamConnector种,FileSink的ParquetBulkFomart。
然后文档讲到ParquetAvroWriters,这种格式写的文件对应hive表怎么创建?貌似默认stored as
parquet的话,不带任何avro的信息呀。
赵一旦 于2021年1月24日周日 上午6:45写道:
> 补充(1)FlinkSQL的查询,对于分区字符串字段貌似必须加'',不加就查询不到?如上hour=02这种直接导致no more split。
>
补充(1)FlinkSQL的查询,对于分区字符串字段貌似必须加'',不加就查询不到?如上hour=02这种直接导致no more split。
其次(2)去除这部分问题后,目前可以发现有split了,但是报了orc相关的错误。并且提交SQL会导致JM直接失败。JM日志如下:
2021-01-24 04:41:24,952 ERROR
org.apache.flink.runtime.util.FatalExitExceptionHandler [] -
FATAL: Thread 'flink-akka.actor.default-dispatcher-2' produced
SQL很简单,如下:
select * from test2
where `dt`=20210124 and `hour`=02 and `supply_id`=2027
limit 1000;
提交之后很快就finished,并且没有查询到任何数据。
但实际是有数据的,通过spark-sql确认过相同的语句可以查询到数据。
看了JM和TM的日志中有No more splits available。
目前来看貌似一个split也没有。这个应该是1.12的新sourceAPI。
不清楚是不是bug,还是有什么使用注意点呢?