J'utilise la version de flux d'air: 2.1.4 + compositeur et j'ai un DAG où j'ai défini le DataProcClustercreateOperator comme celui-ci:
create_dataproc = dataproc_operator.DataprocClusterCreateOperator(
task_id='create_dataproc',
cluster_name='dataproc-cluster-demo-{{ ds_nodash }}',
num_workers=2,
region='us-east4',
zone='us-east4-a',
subnetwork_uri='projects/example',
internal_ip_only=True,
tags=['allow-iap-ssh'],
init_actions_uris=['gs://goog-dataproc-initialization-actions-us-east4/connectors/connectors.sh'],
metadata=[('spark-bigquery-connector-url','gs://spark-lib/bigquery/spark-2.4-bigquery-0.23.1-preview.jar')],
labels=dict(equipo='dm',ambiente='dev',etapa='datapreparation',producto='x',modelo='x'),
master_machine_type='n1-standard-1',
worker_machine_type='n1-standard-1',
image_version='1.5-debian10'
)
J'ai passé les métadonnées comme une séquence de tuples que j'ai lu ici , en utilisant la dicte ne fonctionne pas.
De plus, les métadonnées ne sont pas rendues dans le cluster_config lorsque je vérifie le journal.
L'erreur dans le journal enregistré dans le godet est la suivante: "Echo 'Erreur: aucune des versions de connecteur ou des URL n'est spécifiée" "
Comment puis-je transmettre le paramètre de métadonnées à cet opérateur et le faire fonctionner?
Cette documentation proposée m'a aidé à le faire fonctionner
https://user-images.githubusercontent.com/16856802/140657172-440f-4d1a-882d-14c47541aaa1.png
Tout d'abord, vous devez importer cette bibliothèque:
from airflow.providers.google.cloud.operators.dataproc import ClusterGenerator
Puis définir la tâche comme s'il est expliqué dans l'image, par exemple.
path = f"gs://goog-dataproc-initialization-actions-us-east4/connectors/connectors.sh"
CLUSTER_CONFIG = ClusterGenerator(
project_id='project-id',
zone='us-east4-a',
master_machine_type='n1-standard-1',
worker_machine_type='n1-standard-1',
num_workers=2,
init_actions_uris=[
path
],
image_version='1.5-debian10',
metadata={'spark-bigquery-connector-url':'gs://spark-lib/bigquery/spark-2.4-bigquery-0.23.1-preview.jar'},
).make()
create_dataproc = dataproc_operator.DataprocClusterCreateOperator(
task_id='create_dataproc_cluster',
cluster_name='dataproc-cluster-demo-{{ ds_nodash }}',
project_id='project-id',
region='us-east4',
cluster_config=CLUSTER_CONFIG,
)