【问题标题】:running aws athena query via pyathena通过 pyathena 运行 aws athena 查询
【发布时间】:2017-09-10 18:37:24
【问题描述】:

此查询在 Athena 的前端运行良好:

SELECT * FROM analysisdata."iris" limit 10;

我正在使用此 Python 代码通过 Python/pyathena 运行上述查询

from pyathena import connect

cursor = connect(aws_access_key_id='AKI.DELETED.2Q',
                 aws_secret_access_key='D.DELETED.Al',
                 s3_staging_dir='s3://Bla887342ac-a3ce-4600-94d0-9092f4a6bd20/Iris',
                 region_name='eu-west-1').cursor()

cursor.execute("""SELECT * FROM analysisdata.""iris"" limit 10;""")

print(cursor.description)
print(cursor.fetchall())

不幸的是我得到了:

pyathena.error.DatabaseError: An error occurred (InvalidRequestException) when calling the StartQueryExecution operation: line 1:27: mismatched input '.' expecting {<EOF>, ',', 'WHERE', 'GROUP', 'ORDER', 'HAVING', 'LIMIT', 'APPROXIMATE', 'JOIN', 'CROSS', 'INNER', 'LEFT', 'RIGHT', 'FULL', 'NATURAL', 'UNION', 'EXCEPT', 'INTERSECT'}

我想是我的介绍:

""" and ""

有什么想法吗?

PS:

我试过了:

cursor.execute("SELECT * FROM analysisdata.""iris"" limit 10;")

得到:

pyathena.error.OperationalError: com.facebook.presto.hive.DataCatalogException: Namespace analysisdata not found. Please check your query.

facebook为什么会出现在这?

我也试过了:

cursor.execute("SELECT * FROM analysisdata.iris limit 10;")

同样的错误信息...

【问题讨论】:

  • 该错误似乎与句点 (.) 有关。顺便说一句,你为什么要插入所有这些引号?为什么不直接使用cursor.execute("SELECT * FROM analysisdata.iris limit 10;")
  • 原始 Athena 查询包含引号 ...
  • 是的,但没有它们也可能工作。
  • 好的,谢谢,试一试。
  • @TewfikGhariani 实际上你是对的。看起来好像 s3 和存储桶区域必须对齐。您可以发布答案吗?

标签: python amazon-web-services amazon-athena pyathena


【解决方案1】:

看起来,您在 eu-west-1 中的目录不包含 analysisdata db。

您必须在 Athena 控制台中指定创建数据库/表的区域,而不是指定的 S3 存储桶区域。

要解决这个问题,请登录控制台,并验证哪个区域包含您的数据库/表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 2021-01-18
    • 1970-01-01
    • 2019-04-15
    • 2020-09-12
    • 2019-09-16
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多