好吧。其实我本来觉得 Catalog 和 Connector 独立开会更好理解,结构也更清晰。比如,按照我的想法,每种Catalog的实现,相当于针对各种主流数据源的表都对应某种元数据存储的方式,比如jdbc中存储了hive表的元数据等。 当然这只是想法,不清楚是否有方法官方维护一个Catalog(比如基于jdbc感觉相对方便,即持久化,更大众;毕竟我记得好像hive也支持jdbc的metastore来着),然后这个Catalog不断支持更多的主流数据源。 甚至,如果不可行。我认为读写hive数据不应该复用hive原先的metastore,我是考虑kafka流表的问题。如果flink-sql创建了一个流表保存到hive catalog,那么hive-sql或者spark-sql去读取这个表岂不是会报错什么的?
在 2020/8/11 上午10:26,“Rui Li”<[email protected]> 写入: > 不可以使用jdbc catalog,但使用hive connector嘛? 关于这一点稍微补充一下,我们目前访问hive元数据要求必须启动一个HMS,然后我们通过这个HMS来读写元数据(HiveCatalog就是用来对接HMS的),而不是直接去读底层的DBMS的,所以jdbc catalog是读不了hive元数据的。 On Tue, Aug 11, 2020 at 9:32 AM Leonard Xu <[email protected]> wrote: > Hi Zhao > > > 1 为什么flinksql 1.11中,JDBC > Catalog通过简单的链接转给了connector,catalog和connector并不是同一个概念。我认为应该将jdbc > connectior和jdbc catalog分开放入各自目录。 > > > 两个是不同的概念,JDBC catalog 可以 包含在 JDBC connector 里,你可以理解 JDBC connector 是 Flink > 与 JDBC 交互的连接器,Catalog也属于交互的一部分。JDBC connector里不只是数据的读取/写入 JDBC,也包括了JDBC > dialect 和 JDBC catalog等, JDBC catalog 目前能读取的表都是 JDBC(目前支持Pg) 的表,JDBC > catalog 读取表/库 的逻辑 和 JDBC 读取/写入数据 有很多的复用的逻辑。 > > > > 2 为什么flinksql1.11中,connector部分没有hive connector。而是在hive > integration部分,以及catalogs中介绍。而且在 Table API & SQL/Hive Integration/Hive Read > & Write 部分,第一句是“Using the HiveCatalog and Flink’s connector to Hive, Flink > can read and write from Hive data as an alternative to Hive’s batch engine.” > Hive 是Hadoop上一个比较大的生态系统,同时hive也有自己的计算引擎(batch),Flink 不是简单地 链接 到hive,而是可以作为 > Hive > 的一个替代的计算引擎,除了读取/写入数据到Hive外,用户Hive里的SQL作业完全可以用Flink跑,这已经脱离了简单的交互的范畴了,所以会放在集成部分。 > > > 。难道不使用hivecatalog就不能读取hive数据?是这个意思嘛。感觉好像意思是hive读取特别,这种情况必须使用hive > catalog。不可以使用jdbc catalog,但使用hive connector嘛? > > 是的,不是特别,而是HiveCatalog 就是用来管理 > Hive中表、库、函数的元数据中心,用这个HiveCatalog也是很自然的事情。目前不可以使用JDBC > catalog,很长一段时间也应该不行,Jdbc catalog 里存的表都是DB里的表,不支持存放Hive的表。 > > > 祝好 > Leonard Xu -- Best regards! Rui Li
