对 Lake Formation 集群进行故障排查 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对 Lake Formation 集群进行故障排查

本部分向您介绍在将 Amazon EMR 与 Amazon Lake Formation结合使用时对常见问题进行故障排查的过程。

不允许访问数据湖

您必须明确选择在 Amazon EMR 集群上进行数据筛选,然后才能分析和处理数据湖中的数据。当数据访问失败时,您将在笔记本条目的输出中看到一条通用 Access is not allowed 消息。

要选择并允许在 Amazon EMR 上进行数据筛选,请参阅《Amazon Lake Formation 开发人员指南》中的允许在 Amazon EMR 上进行数据筛选以获取说明。

会话过期

EMR Notebooks 和 Zeppelin 的会话超时由 Lake Formation 的 IAM 角色的 Maximum CLI/API session duration 设置控制。此设置的默认值为 1 小时。如果出现会话超时,在尝试返回 Spark SQL 命令时,您将在笔记本条目的输出中看到下列消息。

Error 401 HTTP ERROR: 401 Problem accessing /sessions/2/statements. Reason: JWT token included in request failed validation. Powered by Jetty:// 9.3.24.v20180605 org.springframework.web.client.HttpClientErrorException: 401 JWT token included in request failed validation…

要验证您的会话,请刷新页面。系统将提示您使用 IdP 重新进行身份验证并将重定向回笔记本。重新进行身份验证后,您可以继续运行查询。

用户在所请求表上没有权限

试图访问您没有访问权限的表时,在尝试运行 Spark SQL 命令时,您将在笔记本条目的输出中看到下列异常:

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table table. Resource does not exist or requester is not authorized to access requested permissions. (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: …

要访问该表,您必须通过在 Lake Formation 中更新与此表关联的权限,向用户授予访问权限。

查询与 Lake Formation 共享的跨账户数据

使用 Amazon EMR 从其他账户访问与您共享的数据时,某些 Spark 库会尝试调用 Glue:GetUserDefinedFunctions API 操作。由于 Amazon RAM 托管权限的版本 1 和 2 不支持此操作,因此您会收到以下错误消息:

"ERROR: User: arn:aws:sts::012345678901:assumed-role/my-spark-role/i-06ab8c2b59299508a is not authorized to perform: glue:GetUserDefinedFunctions on resource: arn:exampleCatalogResource because no resource-based policy allows the glue:GetUserDefinedFunctions action"

要解决此错误,创建资源共享的数据湖管理员必须更新附加到资源共享的 Amazon RAM 托管权限。托管权限的版本 3 Amazon RAM 允许主体执行 glue:GetUserDefinedFunctions 操作。

如果您创建新的资源共享,Lake Formation 会默认应用最新版本的 Amazon RAM 托管权限,您无需执行任何操作。要为现有资源共享启用跨账户数据访问权限,您需要将 Amazon RAM 托管权限更新为版本 3。

您可以在中查看分配给与您共享的资源的 Amazon RAM 权限 Amazon RAM。版本 3 中包含以下权限:

Databases AWSRAMPermissionGlueDatabaseReadWriteForCatalog AWSRAMPermissionGlueDatabaseReadWrite Tables AWSRAMPermissionGlueTableReadWriteForCatalog AWSRAMPermissionGlueTableReadWriteForDatabase AllTables AWSRAMPermissionGlueAllTablesReadWriteForCatalog AWSRAMPermissionGlueAllTablesReadWriteForDatabase
更新现有资源共享的 Amazon RAM 托管权限版本

您(数据湖管理员)可以按照Amazon RAM 用户指南中的说明将Amazon RAM 托管权限更新到新版本,也可以撤消资源类型的所有现有权限并重新授予这些权限。如果您撤消权限,则 Amazon RAM 会删除与该 Amazon RAM 资源类型关联的资源共享。重新授予权限时, Amazon RAM 会创建新的资源共享,并附上最新版本的 Amazon RAM 托管权限。

插入、创建和变更表

不支持插入、创建和变更受 Lake Formation 策略保护的数据库中的表。如果执行这些操作,在尝试运行 Spark SQL 命令时,您会在笔记本条目的输出中看到下列异常。

java.io.IOException: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: …

有关更多信息,请参阅 Amazon EMR 与集成的限制。 Amazon Lake Formation