【问题标题】:SparkSQL in EMR to fetch Data from AWS Glue (Cross Account)EMR 中的 SparkSQL 从 AWS Glue(跨账户)获取数据
【发布时间】:2022-10-21 18:01:01
【问题描述】:

我有一个 EMR 集群,我在其上运行 SparkSQL 作业以从 AWS Glue 目录 (S3) 获取数据,并且两者都存在于不同的账户中。

我的查询是以下形式:-

CREATE OR REPLACE VIEW employee AS
SELECT
 pay.recordid,
        pay.employeeid,
        pay.amount,
        pay.paycode,
        pay.paydate,
        pay.paycycle,
        pay.updatetime
          FROM database.table pay 
WHERE 
pay.partition_0 in (var1)
and pay.partition_1 in (var2)
and pay.partition_2 in (var3)
and paycode = 'P1'
AND paycycle = 'M'
AND country = 'test'
AND paydate = ( SELECT DISTINCT paydate FROM default.table2
WHERE CURRENT_DATE < DATE(paydate) AND CURRENT_DATE > DATE(payperiodstart)
 AND paycycle = 'M')
 AND amount > 0;

在 Glue Catalog 设置中,我还必须授予 Glue:CreateTable 和 Glue:DeleteTable 的权限。如果我删除它们,那么我的查询将失败,那么创建视图为什么需要这 2 个权限?我能否以某种方式删除这 2 个权限并仅使用这些权限运行查询: “胶水:GetDatabase”、“胶水:GetUserDefinedFunctions”、“胶水:GetTable”、“胶水:GetPartitions”

我这样说是因为它可能会带来安全风险。我是 Glue 帐户的所有者,并授予其他人只读权限,因此无法授予 DeleteTable 或 Create Table 权限。

【问题讨论】:

    标签: apache-spark-sql amazon-iam aws-glue identity-management


    【解决方案1】:

    您需要提供这些权限,因为视图在幕后只是一个具有特殊表属性的常规 Glue 表:

    【讨论】:

    • 同样有了这个权限,如果他们运行通过原始 Glue 表删除的命令,那么这将成功吗?
    • 是的,因为替换视图实际上意味着删除表。如果您可以在没有 OR REPLACE 的情况下执行此操作,则不需要 DeleteTable 权限
    • 1. 基本上,如果我按原样运行命令,我需要“CreateTable”和“DeleteTable” 2. 如果我在没有 OR REPLACE 的情况下运行,那么“DeleteTable”我可以删除但不能删除“CreateTable”,并且每次查询运行都会创建多个视图, 是这样吗? 3. 如果我使用 TEMPORARY 视图怎么办,有什么想法吗?
    • 是的,你需要两者。
    • 我已将我的评论更新为 3 分。您能否就这 3 点提供宝贵的见解,这将很有帮助。
    猜你喜欢
    • 2020-07-02
    • 2020-12-08
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多