मैं समझता हूं कि डेटाप्रोक वर्कफ़्लो-टेम्पलेट्स अभी भी बीटा में हैं, लेकिन आप निष्पादन योग्य एसक्यूएल में ऐड-जॉब के माध्यम से पैरामीटर कैसे पास करते हैं? यहाँ एक बुनियादी उदाहरण है:
#/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");) विभाजन बन जाता है, लेकिन दुर्भाग्य से इसे पैरामीटरयुक्त करने की आवश्यकता है।
BTW - मुझे जो त्रुटि मिलती है वह लगातार इस तरह है: त्रुटि: कथन संकलित करते समय त्रुटि: FAILED: ParseException पंक्ति 1:48 '${DATE_PARTITION}' ')'' '' के निकट इनपुट को स्थिर रूप से नहीं पहचान सकती
मैं शायद करीब हूं लेकिन मुझे यकीन नहीं है कि मैं क्या खो रहा हूं।
टीआईए, मेलिसा
1 उत्तर
अपडेट: डेटाप्रोक में अब वर्कफ़्लो टेम्प्लेट पैरामीटराइज़ेशन, एक बीटा फ़ीचर है:
https://cloud.google.com/dataproc/docs/concepts/workflows/workflow-parameters
अपने विशिष्ट मामले के लिए, आप निम्न कार्य कर सकते हैं:
एक खाली टेम्प्लेट बनाएं
gcloud beta dataproc workflow-templates create my-template
उस मान के लिए प्लेसहोल्डर के साथ नौकरी जोड़ें जिसे आप पैरामीटर करना चाहते हैं
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=PLACEHOLDER"
टेम्पलेट कॉन्फ़िगरेशन को फ़ाइल में निर्यात करें
gcloud beta dataproc workflow-templates export my-template \
--destination=hive-template.yaml
पैरामीटर जोड़ने के लिए फ़ाइल संपादित करें
jobs:
- hiveJob:
queryFileUri: gs://mybucket/first-job.sql
scriptVariables:
DATE_PARTITION: PLACEHOLDER
stepId: 0_first-job
parameters:
- name: DATE_PARTITION
fields:
- jobs['0_first-job'].hiveJob.scriptVariables['DATE_PARTITION']
परिवर्तन आयात करें
gcloud beta dataproc workflow-templates import my-template \
--source=hive-template.yaml
एक प्रबंधित क्लस्टर या क्लस्टर चयनकर्ता जोड़ें
gcloud beta dataproc workflow-templates set-managed-cluster my-template \
--cluster-name=my-cluster \
--zone=us-central1-a
पैरामीटर के साथ अपना टेम्प्लेट चलाएं
gcloud beta dataproc workflow-templates instantiate my-template \
--parameters="DATE_PARTITION=${DATE_PARTITION}"
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
google-cloud-dataproc
Google क्लाउड डाटापोक Google क्लाउड प्लेटफ़ॉर्म पर एक प्रबंधित Hadoop MapReduce, Spark, Pig और Hive सेवा है। सेवा समूहों को तैनात / प्रबंधित करने और समूहों पर कार्य प्रस्तुत करने के लिए GUI, CLI और HTTP API एक्सेस मोड प्रदान करती है।