由于 "Set is not JSON serializable",气流任务失败

airflow task is failing because of "Set is not JSON serializable"

我得到了一个在其某些任务中使用 BigQuery 运算符的 DAG。 有一个这样的任务一直失败,说我的配置参数其实是一个集合,无法序列化为JSON.

但是,我不明白为什么我会收到错误消息,因为我没有看到任何可以将此 dict 变成集合的东西。

some_task = BigQueryInsertJobOperator(
        task_id='some_task',
        configuration={
            "query": {
                "query": "{% include 'sql/some_sql_script.sql' %}",
                "useLegacySql": False,
            },
            "destinationTable": {
                some_dest_table.ref #I have access to this value.
            }
        },
        params={
            'some_param': some_param.ref,
            'some_other_param': some_other_param.ref,
            'yet_other_param': yet_other_param.ref
        }
    )

检查呈现的模板时,我可以看到配置“渗入”到实际的 sql 脚本中。即

"config={query select foo from bar"

日志中的实际错误是 TypeError: Object of type set is not JSON serializable

看起来问题出在 destinatonTable 字段上。把花括号放在那里。你用花括号把值包起来,不提供键——这样就形成了一个集合