【发布时间】:2018-06-14 00:04:49
【问题描述】:
我正在开发一个查询 MySQL 数据库、提取数据并将其加载到 Google Cloud Storage 的 DAG。
我要导出的表包括 text、int、float、varchar(20) 和 varchar(32) 数据。
我正在使用气流 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)
我发现了以下错误,似乎与Airflow mysql to gcp Dag error类似
[2018-01-04 11:12:23,372] {models.py:1342} INFO - 执行于 2018-01-04 00:00:00
[2018-01-04 11:12:23,400] {base_hook.py:67} 信息 - 使用连接到:35.189.207.140
[2018-01-04 11:12:24,903] {models.py:1417} 错误 - 需要类似字节的对象,而不是“str”
Traceback(最近一次通话最后一次):
文件“/home/hyperli/.local/lib/python3.5/site-packages/airflow/models.py”,第 1374 行,运行中
结果 = task_copy.execute(context=context)
文件“/home/hyperli/.local/lib/python3.5/site-packages/airflow/contrib/operators/mysql_to_gcs.py”,第 91 行,在执行中
files_to_upload = self._write_local_data_files(光标)
文件“/home/hyperli/.local/lib/python3.5/site-packages/airflow/contrib/operators/mysql_to_gcs.py”,第 136 行,在 _write_local_data_files 中
json.dump(row_dict, tmp_file_handle)
文件“/usr/lib/python3.5/json/init.py”,第 179 行,转储中 fp.write(块)
文件“/usr/lib/python3.5/tempfile.py”,第 622 行,在 func_wrapper 中 返回函数(*args, **kwargs)
TypeError: 需要一个类似字节的对象,而不是 'str'
[2018-01-04 11:12:24,907] {models.py:1433} INFO - 将任务标记为 UP_FOR_RETRY
[2018-01-04 11:12:25,037] {models.py:1462} 错误 - 需要类似字节的对象,而不是“str”
有谁知道为什么会抛出异常?
【问题讨论】:
-
您可以发布您的 MySQL 架构或您要导出的行的示例吗?
-
另外请提供气流版本。
-
airflow 的版本是 1.8.0,我要导出的 mySQL 表包含 int(11)、float、text、date、varchar(20) 和 varchar(32) 数据。
-
你用的是哪个版本的python?查看我发布的答案。
标签: python mysql google-cloud-platform google-cloud-storage airflow