Spark on EKS如何配置AWS Glue Data Catalog作为Hive元数据存储
核心结论
EKS上运行的Spark完全支持将AWS Glue Data Catalog配置为Hive Metastore使用。
常见问题解答
1. 是否需要对Hive Jar包做补丁处理?
不需要。你提到的官方开源Glue Catalog客户端是独立的依赖包,仅需根据你所用Spark对应的Hive版本,选择适配的客户端Jar包,加载到Spark的运行classpath中即可,无需修改原生Hive的源码或打补丁。
你可以通过两种方式加载依赖:
- 构建Spark自定义运行镜像时,提前将Jar包放入镜像内的Spark
jars目录 - 提交作业时通过
--jars参数指定Jar包地址动态加载
2. hive-site.xml如何配置?
不需要从Glue Data Catalog侧获取该配置文件,你手动创建配置即可,核心必填配置项如下:
<configuration> <property> <name>hive.metastore.client.factory.class</name> <value>com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory</value> </property> <property> <name>hive.metastore.glue.region</name> <value>替换为你的Glue服务所在AWS区域,例如us-east-1</value> </property> </configuration>
配置加载有两种可选方案:
- 将写好的
hive-site.xml放入Spark的conf目录,随镜像打包到EKS使用的Spark运行镜像中 - 提交Spark作业时直接通过
--conf参数传入上述两个配置项,无需单独准备xml文件
3. 额外注意事项
需要给Spark作业运行时的Pod绑定对应权限的IAM角色(推荐使用IRSA方案),角色需要包含Glue元数据操作权限、S3数据桶读写权限,否则会出现接口调用报错。
如果你是通过Jupyter Notebook提交作业,需要确认Notebook服务账号绑定的角色权限符合要求,或者提交作业时指定有权限的执行角色。
内容的提问来源于stack exchange,提问作者Or Bar Yaacov
相关产品推荐
相关产品推荐

