簡體   English   中英

使用Python安排Google Cloud Dataflow作業

[英]Schedule a Google Cloud Dataflow job in Python

目前,這些是我知道的安排Dataflow工作執行的選項

  • 使用App Engine Cron服務或雲功能。

    • 這個例子是用Java編寫的,Python有什么官方例子很簡單嗎?
    • 這個例子是Python,但我不確定目前是不是一個好的選擇或“棄用”
  • 來自計算引擎中的cron作業

    • 任何教程嗎?
  • 在流式傳輸管道中使用窗口

    • 我認為這是最簡單的,但總成本是最好的想法嗎?
  • 計划程序

    • 這是一種有效的方法嗎?

我使用App Engine Flex作為我的Dataflow啟動器。 這個微服務具有按需啟動數據流作業的端點,cron也可以這樣做。

這是我的項目結構:

df_tasks/
- __init__.py
- datastore_to_csv.py
- ...other_piplines
__init__.py
dflaunch.yaml
main.py
setup.py <-- used by pipelines

對我而言,這個技巧就是正確設置我的管道依賴項。 即,使用setup.py進行管道依賴。 像這個例子一樣設置它最有幫助: https//github.com/apache/beam/tree/master/sdks/python/apache_beam/examples/complete/juliaset

setup.py:

import setuptools

setuptools.setup(
    name='dataflow_python_pipeline',
    version='1.0.0',
    description='DataFlow Python Pipeline',
    packages=setuptools.find_packages(),
)

我在df_tasks pipline配置看起來像這樣:

pipeline_options = PipelineOptions.from_dictionary({
        'project': project,
        'runner': 'DataflowRunner',
        'staging_location': bucket_path+'/staging',
        'temp_location': bucket_path+'/temp',
        'setup_file': './setup.py'
    })

然后在main.py中:

from df_tasks import datastore_to_csv

project_id = os.environ['GCLOUD_PROJECT']

@app.route('/datastore-to-csv', methods=['POST'])
def df_day_summary():
    # Extract Payload
        payload = request.get_json()
        model = payload['model']
        for_date = datetime.datetime.strptime(payload['for_date'], '%Y/%m/%d')
    except Exception as e:
        print traceback.format_exc()
        return traceback.format_exc()
    # launch the job
    try:
        job_id, job_name = datastore_to_csv.run(
            project=project_id,
            model=model,
            for_date=for_date,
        )
        # return the job id
        return jsonify({'jobId': job_id, 'jobName': job_name})
    except Exception as e:
        print traceback.format_exc()
        return traceback.format_exc()

有多種方法,但我認為非常方便的方法是使用Apache Airflow的DataflowPythonOperator

GCP以Cloud Composer的形式為Apache Airflow提供托管服務,您可以使用它來安排Dataflow管道或其他GCP操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM