私はPythonを使用してAWS Athenaに接続しようとしています。私はこの作業を達成するためにpyathenajdbcを使用しようとしています。私が持っている問題は、接続を得ることです。以下のコードを実行すると、AthenaDriverが見つからないというエラーメッセージが表示されます。 (java.lang.RuntimeException:クラスcom.amazonaws.athena.jdbc.AthenaDriverが見つかりません)。私はAWSからこのファイルをダウンロードし、そのディレクトリに座っていることを確認しました。PythonとPyathenajdbcを使用してAthenaに接続
from mdpbi.rsi.config import *
from mdpbi.tools.functions import mdpLog
from pkg_resources import resource_string
import argparse
import os
import pyathenajdbc
import sys
SCRIPT_NAME = "Athena_Export"
ATHENA_JDBC_CLASSPATH = "/opt/amazon/athenajdbc/AthenaJDBC41-1.0.0.jar"
EXPORT_OUTFILE = "RSI_Export.txt"
EXPORT_OUTFILE_PATH = os.path.join(WORKINGDIR, EXPORT_OUTFILE)
def get_arg_parser():
"""This function returns the argument parser object to be used with this script"""
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
return parser
def main():
args = get_arg_parser().parse_args(sys.argv[1:])
logger = mdpLog(SCRIPT_NAME, LOGDIR)
SQL = resource_string("mdpbi.rsi.athena.resources", "athena.sql")
conn = pyathenajdbc.connect(
s3_staging_dir="s3://athena",
access_key=AWS_ACCESS_KEY_ID,
secret_key=AWS_SECRET_ACCESS_KEY,
region_name="us-east-1",
log_path=LOGDIR,
driver_path=ATHENA_JDBC_CLASSPATH
)
try:
with conn.cursor() as cursor:
cursor.execute(SQL)
logger.info(cursor.description)
logger.info(cursor.fetchall())
finally:
conn.close()
return 0
if __name__ == '__main__':
rtn = main()
sys.exit(rtn)
トレースバック(最後の最新の呼び出し): "メイン" _run_module_as_main に "/usr/lib64/python2.7/runpy.py"、ライン174を、ファイル、fnameは、ローダー、 pkg_name)ファイル "/usr/lib64/python2.7/runpy.py"、行72、_run_code run_globalsファイルの実行コード "/ home/ec2-user/jason_testing/mdpbi/rsi/athena/メイン .py "、行53、 の rtn = main()ファイル"/home/ec2-user/jason_testing/mdpbi/rsi/athena/メイン .py "39行目、接続 driver_pathの主 driver_path = athena_jdbc_driver_pathファイル "/opt/mdpbi/Python_Envs/2.7.10/local/lib/python2.7/dist-packages/pyathenajdbc/ のinitの.py"、 ライン65で 、 、** kwargs)ファイル "/opt/mdpbi/Python_Envs/2.7.10/local/lib/python2.7/dist-packages/pyathenajdbc/connection.py"、 行68、 jpype.JClass ATHENA_DRIVER_CLASS_NAME)ファイル "/opt/mdpbi/Python_Envs/2.7.10/lib64/python2.7/dist-packages/jpype/_jclass.py"、 行55、JClass内 raise _RUNTIMEEXCEPTION.PYEXC( "クラス%sが見つかりません"%name)
あなたが(低レベル)のpythonから直接アテナを使用することができますpyathenajdbc以外のものを使用することを許可されている場合:http://boto3.readthedocs.io/en/latest/reference/services/athena.htmlは、これが与えますあなたはもっとpythonicインターフェイスです:https://github.com/laughingman7743/PyAthena – mark