【问题标题】:Google Cloud Platform Data ETL Batch Processing: Cloud Function Dataflow谷歌云平台数据ETL批处理:云函数数据流
【发布时间】:2019-08-21 13:41:40
【问题描述】:

我在新公司担任数据工程师,致力于构建谷歌云平台 (GCP) 批处理 ETL 管道。我团队的数据科学家最近向我传递了一个数据模型(使用 python 3.6 编写的 .py 文件)。

数据模型有一个 main 函数,我可以调用它并获取一个数据框作为输出,我打算将此数据框附加到一个 bigquery 表中。无论如何,我可以只导入这个主要功能并使用 apache Beam(Dataflow)将它集成到管道中,而无需将数据模型重新编码为 PTransform?还是只使用云调度程序和云函数来实现我想要的效果会更好?

我是数据流和 Apache Beam 的完整初学者,因此非常感谢任何帮助或指南链接!

【问题讨论】:

    标签: python google-cloud-platform google-bigquery apache-beam


    【解决方案1】:

    您可以利用BigQuery's built-in integrations with Pandas

    import pandas
    
    df = pandas.DataFrame(
    {
        'my_string': ['a', 'b', 'c'],
        'my_int64': [1, 2, 3],
        'my_float64': [4.0, 5.0, 6.0],
    }
    )
    full_table_id = 'my_dataset.new_table'
    project_id = 'my-project-id'
    
    df.to_gbq(full_table_id, project_id=project_id)
    

    在管道编排方面,我个人比较喜欢与Cloud Composer集成良好的Apache Airflow

    编辑:查看 df.to_gbq 的大量 docs 以更好地控制加载数据框的方式。

    【讨论】:

      【解决方案2】:

      如果你有数据框,最简单的方法是transform it into CSV,然后将其加载到BigQuery (load job)

      不要忘记添加job_config.write_disposition = 'WRITE_APPEND' 以将数据添加到现有表中。 查看其他参数,模式自动检测,CSV 分隔符,跳过前行可以帮助您实现负载。

      在函数或 Cloud Run 中执行,由调度程序触发。效果很好!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-26
        • 2018-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-22
        相关资源
        最近更新 更多