【问题标题】:ASW Athena boto3 iceberg table - insertASW Athena boto3 冰山表-插入
【发布时间】:2023-01-03 23:00:16
【问题描述】:

我将 AWS 与 Athena iceberg 一起使用。 我正在尝试使用 boto3 向 Athena iceberg 表插入新记录,但出现内部错误GENERIC_INTERNAL_ERROR:在没有事务冲突的情况下提交失败。如果数据清单文件生成于 *- 我猜 boto3 会像常规 Athena 表一样尝试将文件添加到 s3。 有任何想法吗:

...

import boto3
import pandas as pd    
def athena_query_to_dataframe(db, s3Bucket, query):
    
    client = boto3.client('athena')
    listOfStatus = ['SUCCEEDED', 'FAILED', 'CANCELLED']
    listOfInitialStatus = ['RUNNING', 'QUEUED']
    
    print('Starting Query Execution:')
    
    tempS3Path = 's3://{}'.format(s3Bucket)
    
    response = client.start_query_execution(
        QueryString = query,
        QueryExecutionContext = {
            'Database': db
        },
        ResultConfiguration = {
            'OutputLocation': tempS3Path,
        }
    )

    queryExecutionId = response['QueryExecutionId']
    print(client.get_query_execution(QueryExecutionId = queryExecutionId))

    status = client.get_query_execution(QueryExecutionId = queryExecutionId)['QueryExecution']['Status']['State']

    while status in listOfInitialStatus:
        status = client.get_query_execution(QueryExecutionId = queryExecutionId)['QueryExecution']['Status']['State']
        if status in listOfStatus:
            if status == 'SUCCEEDED':
                print('Query Succeeded!')
                paginator = client.get_paginator('get_query_results')
                query_results = paginator.paginate(
                    QueryExecutionId = queryExecutionId,
                    PaginationConfig = {'PageSize': 1000}
                )
            elif status == 'FAILED':
                print('Query Failed!')
            elif status == 'CANCELLED':
                print('Query Cancelled!')
            break
    print(client.get_query_execution(QueryExecutionId = queryExecutionId))
    
    results = []
    rows = []
    
    print('Processing Response')

in_cmd = """ insert into my_iceberg_table values ('aaaaa','bbb');"""
athena_query_to_dataframe('my'db,'my-bck/athena/tables/my_iceberg_table/',in_cmd)

...

【问题讨论】:

  • 你有什么进展吗?有没有办法将 awswrangler 与 athena 和 iceberg 表一起使用?

标签: python boto3 amazon-athena


【解决方案1】:

这是权限问题... 因为这是一个 Iceberg 表,所以我还需要在表和架构之间粘合目录权限。 所以我添加了这个 IAM 权限: { "版本": "2012-10-17", “陈述”: [ { "Sid": "VisualEditor1", "效果": "允许", “行动”: [ “胶水:GetDatabase”, “胶水:GetDatabases”, “胶水:创建数据库”, “胶水:更新表”, “胶水:GetTable” ], “资源”:[ “阿恩:AWS:胶水:::桌子//”, “阿恩:AWS:胶水:::架构/AwsDataCatalog", “阿恩:AWS:胶水:::数据库/”, “阿恩:AWS:胶水:::目录” ] } ] }

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2017-11-20
    • 2022-10-09
    • 2019-08-06
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多