据我所知,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