因为要开发Flinksql,决定要使用HiveCatalog的支持,Flink当前最新版本是1.12.2(注:截至写文时间),集群Hive的版本是1.1.0,而且需要用某个Linux用户进行Kerberbos代理。 在实际开发中,遇到两个问题: Hive 1.1.0 使用的不是jdbc,而是 MetastoreClient,通过Thrift进行连接,而他不支持HADOOP_PROXY_USER。 Kerberos认证需要...
Hive,你需要在 Flink SQL 中创建一个自定义的 Catalog,然后在该 Catalog 中配置 Hive 和 Kerberos ...
请教一下怎么用flinksql 写一个连接带有kerberos 认证的 hive 的catalog? 参考答案: flink必须写到配置文件里,kerberos配置只能从配置文件读 关于本问题的更多回答可点击进行查看: https://developer.aliyun.com/ask/586072 问题四:flinkcdc读取mysql的启动模式是不是不支持timestamp模式? flinkcdc读取mysql的启动模式...
另外不需要任何HADOOP_CONF_DIR或者HIVE_CONF_DIR。 以上内容就是最小化配置。 代码示例: publicstaticvoidmain(String[] args){Catalogcatalog=newHiveCatalog("slankka","flink", args[0], args[1],"1.1.0");try{// List<String> strings = catalog.listDatabases();// for (String database : strings)...
TableEnvironment主要负责SQL解析,将SQL语句转换为内部可以执行的格式。执行过程涉及HiveCatalog。HiveCatalog实现多租户和Kerberos支持的思路基于对Hive 1.x的修改,通过回滚Hive 2.3.x版本以支持Kerberos代理功能。关键在于HiveCatalog底层使用了HiveMetastoreClientWrapper,依赖于HiveShimV100实现对Hive 1.x版本...
那么对于Kerberos代理,则需要HADOOP_PROXY_USER这个变量。 HADOOP_PROXY_USER的运行时设置 Flink 的 TableEnvironment 有这个API: void registerCatalog(String catalogName, Catalog catalog); 这个将注册一个Catalog,对于持久化的Catalog,可以覆盖HiveCatalog的子类的open/close方法来实现运行时切换用户。
【Flink系列六】构建实时计算平台——Flink 1.10+通过Kerberos连接HiveCatalog 本篇文章将基于这个改动,提供多租户的思路。 HiveCatalog 类的源码如下: //org.apache.flink.table.catalog.hive.HiveCatalogpublicclassHiveCatalogextendsAbstractCatalog{@VisibleForTestingHiveMetastoreClientWrapper client;@Overridepublicvoidopen...
MRS813中,flink使用hivecatalog向hive中写数据,报错 GSS initiate failed [Caused by GSSException: No valid credentials provided 。在创建hivecatalog之前,已经做过 Kerberos 认证。GSS initiate failed [Caused by GSSExcepti...
Kerberos是一种计算机网络授权协议,用来进行身份认证,以保证通信的安全性。如果您的Flink作业要访问的Hive支持了Kerberos,则需要您先在Flink全托管控制台上注册Hive Kerberos集群,然后在Flink作业中配置Kerberos集群信息,即可访问支持了Kerberos的Hive。 使用限制 支持Hadoop 2.x和3.x版本的Hive Kerberos集群。 说明 仅实时...
"kerberos") try { UserGroupInformation.loginUserFromKeytab(principal, keytab) } catch { case ex: Exception => logger.error("Kerberos login failure, error:", ex) } } def createHiveCatalog(tEnv: StreamTableEnvironment, hiveConfig: Config): Unit = { val hiveConf: String = hiveConfig.getString...