我正在尝试将一些数据从Mysql导出到GCS,然后将导出的json加载到BigQuery表中,但是我遇到了一些mysql数据类型(例如BIT和DateTime)的麻烦,因为在json结果中它们以某种格式出现这不适用于BigQuery
我想知道是否有一种方法可以将这些值转换为适合bigquery的格式,而无需执行额外的转换过程。
在MySqlToGoogleCloudStorageOperator(https://airflow.apache.org/_api/airflow/contrib/operators/mysql_to_gcs/index.html#airflow.contrib.operators.mysql_to_gcs.MySqlToGoogleCloudStorageOperator)的气流文档中,我可以看到一些可能会有所帮助的函数,例如:
field_to_bigquery(自身,字段)和 convert_type(自身,值,schema_type)
但是我不知道如何在我的代码中实现它。
我尝试过这样的事情:
MySQLtoGCS_TransTBComplete = MySqlToGoogleCloudStorageOperator(
task_id='import,
mysql_conn_id='mysql_default',
google_cloud_storage_conn_id='google_cloud_storage_default',
sql='SELECT * FROM table'
bucket='{bucket}',
filename='file.json',
dag=dag)
MySQLtoGCS_TransTBComplete.field_to_bigquery("datetime_field")
有人可以帮助我实现我想要的吗?
谢谢
答案 0 :(得分:0)
您不能在代码中专门使用这两个功能。
fs.createReadStream(path)
,则将使用 field_to_bigquery
schema_filename
始终在任务执行期间使用(您可以在convert_type
根据文档所述,似乎MySQL中的某些字段类型未正确处理(请参见此处:https://airflow.apache.org/docs/stable/_modules/airflow/contrib/operators/mysql_to_gcs.html#MySqlToGoogleCloudStorageOperator.field_to_bigquery)。因此,您可能必须实现继承sql_to_gcs.py
类并覆盖这两个方法的自定义运算符。