通过气流将程序包传递给在dataproc上运行的pyspark?

通过气流将程序包传递给在dataproc上运行的pyspark?,pyspark,airflow,google-cloud-dataproc,Pyspark,Airflow,Google Cloud Dataproc,我们有一个气流DAG,涉及在Dataproc上运行pyspark作业。在作业期间,我们需要一个jdbc驱动程序,我通常会将其传递给dataproc submit命令: gcloud dataproc jobs submit pyspark \ --cluster my-cluster \ --properties spark.jars.packages=mysql:mysql-connector-java:6.0.6 \ --py-files ... 但是我如何使用Airflow的DataPr

我们有一个气流DAG,涉及在Dataproc上运行pyspark作业。在作业期间,我们需要一个jdbc驱动程序,我通常会将其传递给dataproc submit命令:

gcloud dataproc jobs submit pyspark \
--cluster my-cluster \
--properties spark.jars.packages=mysql:mysql-connector-java:6.0.6 \
--py-files ...
但是我如何使用Airflow的DataProcPySparkOperator来实现呢

目前,我们正在将此库添加到集群本身:

gcloud dataproc clusters create my-cluster \
  --region global \
  --zone europe-west1-d \
  ...
  --properties spark:spark.jars.packages=mysql:mysql-connector-java:6.0.6 \
  ...

这似乎很好,但感觉不是正确的方法。还有其他方法吗?

我相信您希望将
dataproc\u pyspark\u属性
传递给
dataprocpypsparkoperator

见:

我看到了这个,但是文档说它是一个“Pig属性的映射”,我想我只能在“jars”属性中提供jar URL(也就是说,我自己将jar放入存储中),而不是使用
mysql:mysql连接器java:6.0.6
格式来自动解决依赖关系。还是不是这样?这两点都是正确的。您可以自己将文件放入GCS,也可以使用maven包路径。只需使用
dataproc_pyspark_属性={'pig.additional.jars':'mysql:mysql连接器java:6.0.6'}
,以及
dataproc_pyspark_属性={'jar':'mysql:mysql连接器java:6.0.6'}
dataproc_pyspark_jars即可=['mysql:mysql connector java:6.0.6']
都不起作用-前两个导致ClassNotFoundException,第三个导致NullPointerException:-/听起来你想要的是
spark.jars.packages
来提供maven坐标列表:但是我可以将其作为pig属性传递吗?或者在任何其他DataProcySparkOperator参数中传递吗?