Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform GCP Composer-如何运行Python 3而不是Python 2_Google Cloud Platform_Google Cloud Dataflow_Airflow_Google Cloud Composer - Fatal编程技术网

Google cloud platform GCP Composer-如何运行Python 3而不是Python 2

Google cloud platform GCP Composer-如何运行Python 3而不是Python 2,google-cloud-platform,google-cloud-dataflow,airflow,google-cloud-composer,Google Cloud Platform,Google Cloud Dataflow,Airflow,Google Cloud Composer,我正在使用GCP Composer来编排ETL 创建实例时,我将Python版本设置为Python 3 使用DataFlowPythonOperator的任务之一,如果从本地开发人员docker实例启动,它可以正常工作(Airflow v1.10.1+Python 3.6.9) 如果我从运行Airflow v1.10.1的Docker映像运行它,它将使用Apache Beam Python 3.6 SDK 2.16.0 每当我们部署到composer-1.7.9-aiffair-1.10.1时,

我正在使用GCP Composer来编排ETL

创建实例时,我将Python版本设置为Python 3

使用DataFlowPythonOperator的任务之一,如果从本地开发人员docker实例启动,它可以正常工作(Airflow v1.10.1+Python 3.6.9)

如果我从运行Airflow v1.10.1的Docker映像运行它,它将使用Apache Beam Python 3.6 SDK 2.16.0

每当我们部署到composer-1.7.9-aiffair-1.10.1时,任务都会使用Python 2.7运行

如果从Composer启动,它还始终使用Google Cloud Dataflow SDK for Python 2.5.0运行数据流作业

作曲家默认考虑Python版本2.7,这会破坏很多转换…

我找不到一种方法来配置Composer以使用Python3.x创建和运行数据流作业

命令:

$ gcloud composer environments describe etl --location us-central1
结果:

softwareConfig:
    imageVersion: composer-1.7.9-airflow-1.10.1
    pythonVersion: '3'

Composer环境的Python版本与执行数据流作业的Python版本无关

目前,DataflowPythonOperator将Python版本硬编码为2。有一个已提交的修复程序,但尚未发布。您可以等待带有应用修复程序的Airflow版本的发布,也可以按照本手册第二部分中的详细说明对其进行后置端口

还请注意,您必须将ApacheBeamSDK包含到Composer环境的Python包中。由于2.16.0是第一个正式支持Python 3的版本,我建议在包列表中指定
ApacheBeam==2.16.0


至于为什么可以在本地气流设置中启动Python 3中的作业,我怀疑那里的
Python
命令默认为Python 3。

我遵循了几个步骤解决了这个问题:

  • 将您的Composer实例升级到更高版本。我升级到composer-1.8.3-airflow-1.10.2(在我写答案期间)
  • 您需要覆盖DataFlowPythonOperatorDataFlowHook(您可以遵循)或使用此选项
  • 运行dag,它应该使用Python3
  • 快乐编码


    在这种情况下,我需要在composer环境中安装ApacheBeam,这不是我想要的。。。当使用可用的DataFlowPythonOperator时,它会使用python2.7运行作业,这可以处理简单的任务。但是,当我们有更复杂的转换时,它会中断…您是否尝试过解决问题的方法?不必在Composer内部显式安装ApacheBeam,它就可以正常工作。