Je comprends que les modèles de flux de travail dataproc sont toujours en version bêta, mais comment transmettre les paramètres via le complément dans l'exécutable sql? Voici un exemple de base:passer des paramètres via des modèles de workflow dataproc
#/bin/bash
DATE_PARTITION=$1
echo DatePartition: $DATE_PARTITION
# sample job
gcloud beta dataproc workflow-templates add-job hive \
--step-id=0_first-job \
--workflow-template=my-template \
--file='gs://mybucket/first-job.sql' \
--params="DATE_PARTITION=$DATE_PARTITION"
gcloud beta dataproc workflow-templates run $WORK_FLOW
gcloud beta dataproc workflow-templates remove-job $WORK_FLOW --step-
id=0_first-job
echo `date`
Voici mon premier fichier-job.sql appelé de la coquille:
SET hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
SET mapred.output.compress=true;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
SET io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;
USE mydb;
CREATE EXTERNAL TABLE if not exists data_raw (
field1 string,
field2 string
)
PARTITIONED BY (dt String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION 'gs://data/first-job/';
ALTER TABLE data_raw ADD IF NOT EXISTS PARTITION(dt="${hivevar:DATE_PARTITION}");
Dans l'instruction ALTER TABLE, quelle est la syntaxe correcte? J'ai essayé ce qui ressemble à plus de 15 variations mais rien ne fonctionne. Si je le code dur comme ceci (ALTER TABLE data_raw AJOUTER SI NON EXISTS PARTITION (dt = "2017-10-31");) la partition est créée, mais elle doit malheureusement être paramétrée.
BTW - L'erreur que je reçois est toujours comme ceci: Erreur: Erreur lors de la déclaration compilation: failed: ligne ParseException 01h48 ne peut pas reconnaître l'entrée près de « $ {DATE_PARTITION} » «) » « » en constante
Je suis probablement proche mais je ne sais pas ce que je manque.
TIA, Melissa
Ugh ... merci, qui a travaillé. J'ai corrigé l'exemple de code dans le message d'origine à la version de travail, au cas où il pourrait aider quelqu'un d'autre. :) – Melissa