1

我正在尝试使用 pyathena(它看起来比原生 boto3 更简单)来执行一些查询。但是,我无法找到如何定义要使用的数据目录。例如使用 boto3 的查询执行:

    athena_client = boto3.client('athena')

    start_execution_response = athena_client.start_query_execution(
        QueryString='SELECT * FROM test_table',
        QueryExecutionContext={
            'Database': 'default',
            'Catalog': 'AwsDataCatalog'
        },
        ResultConfiguration={
            'OutputLocation': 's3://some_bucket/query_results/'
        }
    )

并且使用 pyathena 我可以做类似的事情(并且有效):

    cursor = connect(s3_staging_dir='s3://some_bucket/query_results/',
                     schema_name="some_db",
                     ).cursor()

    cursor.execute("SELECT * FROM table1")

但是,当我有多个目录时,它如何工作?我错过了什么吗?

谢谢,尼尔。

4

2 回答 2

0

您可以在创建连接时指定 catalog_name,如下所示

 cursor = connect(s3_staging_dir='s3://some_bucket/query_results/',
                 catalog_name="catalog",
                 schema_name="some_db",
                 ).cursor()
 cursor.execute("SELECT * FROM table1")

您可以参考此源代码,其中提到了它支持的所有参数。 https://github.com/laughingman7743/PyAthena/blob/master/pyathena/connection.py#227

于 2021-09-17T09:58:20.043 回答
0

我假设您也可以使用完全限定的表名编写查询

SELECT * FROM AwsDataCatalog.default.test_table

然后参考不同的目录。

于 2020-09-08T12:24:10.743 回答