AWS Athena 可以访问 Glue 目录博客,但查询返回零行

问题描述 投票:0回答:2

AWS Athena 似乎存在权限问题,但我不知道在哪里?

我浏览粘合表(代表爬行的 S3 csv 文件),无论我尝试“预览”或列出哪个,我都会得到零行。

amazon-web-services aws-glue amazon-athena
2个回答
0
投票

如果您的表已分区,您需要先运行

MSCK REPAIR TABLE
来发现这些分区。更多相关信息这里


0
投票

我有类似的问题,我作为一个问题提出来这里

我将在此处复制问题,这样您就无需跳转:

我有一个指向 S3 位置的 AWS Glue 表(比方说

s3://bucket-name/root-folder
) 在
root-folder
下,我有多个文件夹(比如说
1
2
3
等)。 在每个文件夹下我都有一些镶木地板文件。

我创建了一个 GLue 表,它指向没有分区的

root-folder
。 当我使用 Athena 查询编辑器运行查询时,我得到了预期的结果,它们包含来自所有 1、2、3 文件夹的数据。 我运行的查询:

select count(*) from db_name.table_name

当我使用带有 Spark 的 Athena 笔记本运行相同的查询时,我得到一个空表: 我运行的代码:

spark.sql("select count(*) from db_name.table_name").count()

下面的代码也不起作用并返回0:

spark.read.table("db_name.table_name").count()

当我运行

show()
而不是
count()
时,我得到了正确的架构,但表是空的。

当我在 Athena Spark 中运行以下代码时,我得到了正确的结果:

spark.read.option("recursiveFileLookup", "true").parquet("s3a://bucket-name/root-folder/").count()

工作组的 IAM 角色包含以下(非常广泛开放)权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:SearchTables",
                "glue:GetTables",
                "glue:GetTableVersions",
                "glue:GetPartitions",
                "glue:BatchGetPartition",
                "glue:GetDatabases",
                "glue:GetPartitionIndexes",
                "glue:GetTable",
                "glue:GetDatabase",
                "glue:GetPartition",
                "glue:GetTableVersion",
                "glue:GetUserDefinedFunction",
                "glue:GetColumnStatisticsForTable",
                "glue:GetUserDefinedFunctions",
                "glue:GetColumnStatisticsForPartition"
            ],
            "Resource": [
                "arn:aws:glue:eu-central-1:MY_ACCOUNT:catalog",
                "arn:aws:glue:eu-central-1:MY_ACCOUNT:table/db_name/*",
                "arn:aws:glue:eu-central-1:MY_ACCOUNT:database/db_name"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:List*",
            "Resource": [
                "arn:aws:s3:::bucket-name/*",
                "arn:aws:s3:::bucket-name"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "s3:Get*",
            "Resource": [
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

虽然文件夹名称与分区命名不匹配,但 S3 结构似乎已分区。另外,我觉得很奇怪的是,Athena 查询编辑器可以工作,而 Spark 却不能工作

© www.soinside.com 2019 - 2024. All rights reserved.