據我所知,dataproc工作流程模板仍處於測試階段,但您如何通過添加作業將參數傳遞到可執行文件sql?這是一個基本的例子:通過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`
這裏從外殼打電話給我的第一job.sql文件:
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}");
在ALTER TABLE語句,什麼是正確的語法?我嘗試了超過15種變化,但沒有任何效果。如果我像這樣硬編碼(ALTER TABLE data_raw ADD IF NOT EXISTS PARTITION(dt =「2017-10-31」);)分區被創建,但不幸的是它需要參數化。
順便說一句 - 我收到的錯誤是一直這樣的: 錯誤:錯誤在編譯聲明:失敗:ParseException的線1:48無法識別附近「$ {} DATE_PARTITION」「)」「在不斷
」輸入我可能很接近但不確定我缺少什麼。
TIA, 梅麗莎
呃......謝謝你,工作。我將原始文章中的代碼示例更正爲工作版本,並將其用於幫助其他人。 :) – Melissa