我正在开发一个dag,它可以查询mysql数据库,提取数据并将其加载到google云存储中。
我试图导出的表包括text、int、float、varchar(20)和varchar(32)数据。
我使用的是airflow v1.8.0。
default_args = {
'owner' : 'tia',
'start_date' : datetime(2018, 1, 4),
'depends_on_past' : False,
'retries' : 1,
'retry_delay':timedelta(minutes=5),
}
dag = DAG('mysql_to_gcs', default_args=default_args)
export_waybills = MySqlToGoogleCloudStorageOperator(
task_id='extract_waybills',
mysql_conn_id = 'podiotestmySQL',
sql = 'SELECT * FROM podiodb.logistics_waybills',
bucket='podio-reader-storage',
filename= 'podio-data/waybills{}.json',
schema_filename='podio-data/schema/waybills.json',
dag=dag)
我跨越了以下错误,这似乎是类似于这个mysql到gcp的dag错误
[2018-01-04 11:12:23372]{models.py:1342}信息-执行时间:2018-01-04 00:00:00
[2018-01-04 11:12:23400]{base\u hook.py:67}信息-使用连接到:35.189.207.140
[2018-01-04 11:12:24903]{models.py:1417}错误-需要类似字节的对象,而不是“str”
回溯(最近一次呼叫):
文件“/home/hyperli/.local/lib/python3.5/site packages/airflow/models.py”,第1374行,运行中
result=task\u copy.execute(context=context)
文件“/home/hyperli/.local/lib/python3.5/site packages/airflow/contrib/operators/mysql\u to\u gcs.py”,第91行,在execute中
files\u to \u upload=self.\u write \u local \u data \u文件(光标)
file“/home/hyperli/.local/lib/python3.5/site packages/airflow/contrib/operators/mysql\u to \u gcs.py”,第136行,在\u write \u local \u data \u文件中
json.dump(row\u dict,tmp\u file\u handle)
dump fp.write(chunk)中的文件“/usr/lib/python3.5/json/init.py”,第179行
文件“/usr/lib/python3.5/tempfile.py”,第622行,在func\u wrapper return func(*args,**kwargs)中
typeerror:需要类似字节的对象,而不是“str”
[2018-01-04 11:12:24907]{models.py:1433}信息-将任务标记为up\u,以便重试
[2018-01-04 11:12:25037]{models.py:1462}错误-需要类似字节的对象,而不是“str”
有人知道为什么抛出异常吗?
1条答案
按热度按时间pbpqsu0x1#
你在用Python3吗?因为最新版本(1.90)的mysql\u到\u gcs与python不兼容。
很显然,这个操作符在这里被更改,以使mysql\u与\u gcs py3兼容。但是最新的版本(1.90)不包括这个变化