1. ホーム
  2. python

[解決済み] pyathenaを使ったaws athenaクエリの実行

2022-02-08 04:20:35

質問内容

このクエリは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 ""

何かアイデアはありますか?

追記

試してみました。

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;")

同じエラーメッセージ ...

どうすればいいですか?

eu-west-1のカタログにanalystdata dbが含まれていないようです。

指定したS3バケットのリージョンではなく、Athena Consoleでデータベース/テーブルを作成したリージョンを指定する必要があります。

そのためには、コンソールにログインして、どのリージョンにデータベースやテーブルが入っているかを確認してください。