有没有小伙伴在用flink读取hive的时候报错这个错误呀?用的是flink 1.12版本的hive table connector
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用 Flink 1.12 版本的 Hive Table Connector 读取 Hive 表时,可能会遇到类似以下错误:
Caused by: MetaException(message:Initialize DlfMetaStoreClient failed: Initialize DlfMetaStoreClient failed: Cannot obtain STS token from EMR meta-service. Note that AK-Mode[dlf.catalog.akMode] can only used in EMR clusters, otherwise you should config the dlf.catalog.accessKeyId and dlf.catalog.accessKeySecret explicitly.)
该问题通常是由于配置文件中的 Hive Catalog 初始化异常导致的。具体来说,dlf.catalog.akMode
参数被设置为 EMR_AUTO
,但当前环境并非运行在 EMR 集群中,因此无法正确获取 STS Token。
要解决此问题,请按照以下步骤操作:
hive-site.xml
文件找到 hive-conf-dir
目录下的 hive-site.xml
文件,并删除以下配置:
<property>
<name>dlf.catalog.akMode</name>
<value>EMR_AUTO</value>
</property>
在 hive-site.xml
文件中添加以下配置,显式指定阿里云账号的 AccessKeyId 和 AccessKeySecret:
<property>
<name>dlf.catalog.accessKeyId</name>
<value>${AccessKeyId}</value>
</property>
<property>
<name>dlf.catalog.accessKeySecret</name>
<value>${AccessKeySecret}</value>
</property>
注意:请将 ${AccessKeyId}
和 ${AccessKeySecret}
替换为您实际的阿里云账号的 AccessKeyId 和 AccessKeySecret。
DLF Endpoint 配置
如果您使用的是 Data Lake Formation (DLF) 服务,请确保正确配置了 dlf.endpoint
参数。推荐使用 DLF 的 VPC Endpoint,例如:
dlf.endpoint=dlf-vpc.cn-hangzhou.aliyuncs.com
重要提示:dlf.endpoint
和 dlf.region-id
必须选择相同的地域。
网络连通性检查
确保 Flink 工作空间与 Hive 或 DLF 服务之间的网络是连通的。如果跨 VPC 访问,请参考如何访问跨 VPC 的其他服务的相关文档。
版本兼容性
Flink 1.12 版本的 Hive Table Connector 对某些功能可能存在限制或兼容性问题。建议升级到更高版本的 Flink 引擎(如 VVR 3.0.3 或更高版本),以获得更好的稳定性和功能支持。
通过上述修改配置和检查网络连通性,可以有效解决 Flink 读取 Hive 表时出现的 Cannot obtain STS token from EMR meta-service
错误。如果问题仍然存在,请进一步检查日志信息并确认是否涉及其他依赖冲突或配置问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。