概要
JPype1==0.7.0
を利用してJdbcOperator()
を実行すると表題のエラーが出力される。
目次
バージョン
DAG
一部抜粋
from airflow.operators.jdbc_operator import JdbcOperator
sql_task = JdbcOperator(
task_id='sql_cmd',
jdbc_conn_id='my_connection_id',
#template_searchpath='/etc/dev/airflow/templates',
#sql=['sample.sql'],
sql=['select id,name from sample_table'],
params={"db":'MY_DBNAME'},
dag=dag
)
エラー詳細
ログの見方:DAGの実行結果ログを確認する
[2019-08-21 09:30:48,913] {taskinstance.py:1047} ERROR - '_jpype.PyJPField' object has no attribute 'getStaticAttribute'
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/airflow/models/taskinstance.py", line 922, in _run_raw_task
result = task_copy.execute(context=context)
File "/usr/local/lib/python2.7/dist-packages/airflow/operators/jdbc_operator.py", line 63, in execute
self.hook.run(self.sql, self.autocommit, parameters=self.parameters)
File "/usr/local/lib/python2.7/dist-packages/airflow/hooks/dbapi_hook.py", line 159, in run
with closing(self.get_conn()) as conn:
File "/usr/local/lib/python2.7/dist-packages/airflow/hooks/jdbc_hook.py", line 51, in get_conn
jars=jdbc_driver_loc.split(","))
File "/usr/local/lib/python2.7/dist-packages/jaydebeapi/__init__.py", line 381, in connect
jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs)
File "/usr/local/lib/python2.7/dist-packages/jaydebeapi/__init__.py", line 183, in _jdbc_connect_jpype
types_map[i.getName()] = i.getStaticAttribute()
AttributeError: '_jpype.PyJPField' object has no attribute 'getStaticAttribute'
対策
JPype1==0.6.3ではエラーにならないのでダウングレードをする。
参考