1. खास जानकारी - Google Dataproc
Dataproc, पूरी तरह से मैनेज की जाने वाली और बहुत ज़्यादा स्केलेबल सेवा है. इसका इस्तेमाल Apache Spark, Apache Flink, Presto, और कई अन्य ओपन सोर्स टूल और फ़्रेमवर्क को चलाने के लिए किया जाता है. डेटा लेक को मॉडर्न बनाने, ईटीएल / ईएलटी, और सुरक्षित डेटा साइंस के लिए, Dataproc का इस्तेमाल करें. Dataproc को Google Cloud की कई सेवाओं के साथ भी पूरी तरह से इंटिग्रेट किया गया है. इनमें BigQuery, Cloud Storage, Vertex AI, और Dataplex शामिल हैं.
Dataproc तीन वर्शन में उपलब्ध है:
- Dataproc Serverless की मदद से, PySpark जॉब को चलाया जा सकता है. इसके लिए, आपको इंफ़्रास्ट्रक्चर और ऑटोस्केलिंग को कॉन्फ़िगर करने की ज़रूरत नहीं होती. Dataproc Serverless, PySpark बैच वर्कलोड और सेशन / नोटबुक के साथ काम करता है.
- Dataproc on Google Compute Engine की मदद से, Hadoop YARN क्लस्टर को मैनेज किया जा सकता है. इसका इस्तेमाल, YARN पर आधारित Spark वर्कलोड के लिए किया जाता है. इसके अलावा, Flink और Presto जैसे ओपन सोर्स टूल के लिए भी इसका इस्तेमाल किया जा सकता है. क्लाउड पर आधारित क्लस्टर को अपनी ज़रूरत के हिसाब से वर्टिकल या हॉरिज़ॉन्टल स्केलिंग के साथ-साथ ऑटोस्केलिंग के लिए भी कॉन्फ़िगर किया जा सकता है.
- Dataproc on Google Kubernetes Engine की मदद से, Spark, PySpark, SparkR या Spark SQL जॉब सबमिट करने के लिए, अपने GKE इन्फ़्रास्ट्रक्चर में Dataproc वर्चुअल क्लस्टर कॉन्फ़िगर किए जा सकते हैं.
इस कोडलैब में, Dataproc Serverless का इस्तेमाल करने के कई अलग-अलग तरीके बताए गए हैं.
Apache Spark को मूल रूप से Hadoop क्लस्टर पर चलाने के लिए बनाया गया था. यह YARN का इस्तेमाल रिसोर्स मैनेजर के तौर पर करता था. Hadoop क्लस्टर को मैनेज करने के लिए, खास तरह की विशेषज्ञता की ज़रूरत होती है. साथ ही, यह पक्का करना होता है कि क्लस्टर पर कई अलग-अलग नॉब सही तरीके से कॉन्फ़िगर किए गए हों. इसके अलावा, Spark को भी उपयोगकर्ता से नॉब का एक अलग सेट सेट करने के लिए कहना पड़ता है. इस वजह से, कई बार डेवलपर को स्पार्क कोड पर काम करने के बजाय, अपने इन्फ़्रास्ट्रक्चर को कॉन्फ़िगर करने में ज़्यादा समय लगता है.
Dataproc Serverless की मदद से, Hadoop क्लस्टर या Spark को मैन्युअल तरीके से कॉन्फ़िगर करने की ज़रूरत नहीं होती. Dataproc Serverless, Hadoop पर नहीं चलता है. यह अपने संसाधन की ज़रूरतों का पता लगाने के लिए, डाइनैमिक रिसोर्स ऐलोकेशन का इस्तेमाल करता है. इसमें अपने-आप स्केलिंग की सुविधा भी शामिल है. Dataproc Serverless की मदद से, अब भी Spark प्रॉपर्टी के छोटे सबसेट को पसंद के मुताबिक बनाया जा सकता है. हालांकि, ज़्यादातर मामलों में आपको इनमें बदलाव करने की ज़रूरत नहीं होगी.
2. सेट अप करें
सबसे पहले, आपको इस कोडलैब में इस्तेमाल किए गए एनवायरमेंट और संसाधनों को कॉन्फ़िगर करना होगा.
Google Cloud प्रोजेक्ट बनाएं. आपके पास किसी मौजूदा खाते का इस्तेमाल करने का विकल्प भी है.
Cloud Console टूलबार में मौजूद Cloud Shell पर क्लिक करके इसे खोलें.

Cloud Shell, इस्तेमाल के लिए तैयार शेल एनवायरमेंट उपलब्ध कराता है. इसका इस्तेमाल इस कोडलैब के लिए किया जा सकता है.

Cloud Shell, आपके प्रोजेक्ट का नाम डिफ़ॉल्ट रूप से सेट करेगा. echo $GOOGLE_CLOUD_PROJECT चलाकर, इसकी दोबारा जांच करें. अगर आपको आउटपुट में अपना प्रोजेक्ट आईडी नहीं दिखता है, तो इसे सेट करें.
export GOOGLE_CLOUD_PROJECT=<your-project-id>
अपने संसाधनों के लिए, Compute Engine का रीजन सेट करें. जैसे, us-central1 या europe-west2.
export REGION=<your-region>
एपीआई चालू करें
इस कोडलैब में इन एपीआई का इस्तेमाल किया गया है:
- BigQuery
- डेटाप्रॉक
ज़रूरी एपीआई चालू करें. इसमें करीब एक मिनट लगेगा. प्रोसेस पूरी होने पर, आपको एक मैसेज दिखेगा.
gcloud services enable bigquery.googleapis.com gcloud services enable dataproc.googleapis.com
नेटवर्क ऐक्सेस कॉन्फ़िगर करना
Dataproc Serverless को उस इलाके में Google Private Access चालू करने की ज़रूरत होती है जहां आपको Spark जॉब चलाने हैं. ऐसा इसलिए, क्योंकि Spark ड्राइवर और एक्ज़ीक्यूटर के पास सिर्फ़ प्राइवेट आईपी होते हैं. इसे default सबनेट में चालू करने के लिए, यहां दिया गया कमांड चलाएं.
gcloud compute networks subnets update default \
--region=${REGION} \
--enable-private-ip-google-access
इस बात की पुष्टि की जा सकती है कि Google Private Access चालू है या नहीं. इसके लिए, यहां दिए गए तरीके का इस्तेमाल करें. इससे True या False आउटपुट मिलेगा.
gcloud compute networks subnets describe default \
--region=${REGION} \
--format="get(privateIpGoogleAccess)"
स्टोरेज बकेट बनाना
एक स्टोरेज बकेट बनाएं. इसका इस्तेमाल, इस कोडलैब में बनाई गई ऐसेट को सेव करने के लिए किया जाएगा.
अपने बकेट के लिए कोई नाम चुनें. बकेट के नाम सभी उपयोगकर्ताओं के लिए, दुनिया भर में यूनीक होने चाहिए.
export BUCKET=<your-bucket-name>
उस क्षेत्र में बकेट बनाएं जहां आपको Spark जॉब चलाने हैं.
gsutil mb -l ${REGION} gs://${BUCKET}
आपको दिखेगा कि आपकी बकेट, Cloud Storage console में उपलब्ध है. अपनी बकेट देखने के लिए, gsutil ls भी चलाया जा सकता है.
परसिस्टेंट हिस्ट्री सर्वर बनाना
Spark यूज़र इंटरफ़ेस (यूआई) में डीबग करने वाले कई टूल उपलब्ध हैं. साथ ही, इससे Spark जॉब के बारे में अहम जानकारी मिलती है. Dataproc सर्वरलेस की पूरी हो चुकी नौकरियों के लिए Spark यूज़र इंटरफ़ेस (यूआई) देखने के लिए, आपको एक नोड वाला Dataproc क्लस्टर बनाना होगा. इसका इस्तेमाल परसिस्टेंट हिस्ट्री सर्वर के तौर पर किया जा सकता है.
अपने परसिस्टेंट हिस्ट्री सर्वर के लिए कोई नाम सेट करें.
PHS_CLUSTER_NAME=my-phs
नीचे दिए गए तरीके आज़माएं.
gcloud dataproc clusters create ${PHS_CLUSTER_NAME} \
--region=${REGION} \
--single-node \
--enable-component-gateway \
--properties=spark:spark.history.fs.logDirectory=gs://${BUCKET}/phs/*/spark-job-history
इस कोडलैब में, Spark UI और परसिस्टेंट हिस्ट्री सर्वर के बारे में ज़्यादा जानकारी बाद में दी जाएगी.
3. Dataproc बैचेस की मदद से, बिना सर्वर वाले Spark जॉब चलाना
इस सैंपल में, आपको न्यूयॉर्क सिटी (एनवाईसी) में Citi Bike की यात्राओं से जुड़े सार्वजनिक डेटासेट के डेटा के साथ काम करना होगा. NYC Citi Bikes, न्यूयॉर्क शहर में किराये पर बाइक देने वाली एक कंपनी है. इसके लिए, आपको पैसे चुकाने पड़ते हैं. आपको कुछ सामान्य बदलाव करने होंगे. साथ ही, Citi Bike के सबसे लोकप्रिय स्टेशन आईडी के टॉप 10 को प्रिंट करना होगा. इस सैंपल में, ओपन सोर्स spark-bigquery-connector का इस्तेमाल किया गया है. इससे Spark और BigQuery के बीच डेटा को आसानी से पढ़ा और लिखा जा सकता है.
नीचे दिए गए Github repo और cd को उस डायरेक्ट्री में क्लोन करें जिसमें citibike.py फ़ाइल मौजूद है.
git clone https://github.com/GoogleCloudPlatform/devrel-demos.git cd devrel-demos/data-analytics/next-2022-workshop/dataproc-serverless
citibike.py
import sys
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
from pyspark.sql.types import BooleanType
if len(sys.argv) == 1:
print("Please provide a GCS bucket name.")
bucket = sys.argv[1]
table = "bigquery-public-data:new_york_citibike.citibike_trips"
spark = SparkSession.builder \
.appName("pyspark-example") \
.config("spark.jars","gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.26.0.jar") \
.getOrCreate()
df = spark.read.format("bigquery").load(table)
top_ten = df.filter(col("start_station_id") \
.isNotNull()) \
.groupBy("start_station_id") \
.count() \
.orderBy("count", ascending=False) \
.limit(10) \
.cache()
top_ten.show()
top_ten.write.option("header", True).csv(f"gs://{bucket}/citibikes_top_ten_start_station_ids")
Cloud SDK का इस्तेमाल करके, सर्वर का इस्तेमाल किए बिना Spark पर जॉब सबमिट करें. यह Cloud Shell में डिफ़ॉल्ट रूप से उपलब्ध होता है. अपने शेल में यह निर्देश चलाएं. यह सर्वरलेस स्पार्क जॉब सबमिट करने के लिए, Cloud SDK और Dataproc Batches API का इस्तेमाल करता है.
gcloud dataproc batches submit pyspark citibike.py \
--batch=citibike-job \
--region=${REGION} \
--deps-bucket=gs://${BUCKET} \
--jars=gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.26.0.jar \
--history-server-cluster=projects/${GOOGLE_CLOUD_PROJECT}/regions/${REGION}/clusters/${PHS_CLUSTER_NAME} \
-- ${BUCKET}
इस बारे में ज़्यादा जानने के लिए:
gcloud dataproc batches submitमें Dataproc Batches API का रेफ़रंस दिया गया है.pysparkसे पता चलता है कि PySpark जॉब सबमिट की जा रही है.--batch, नौकरी का नाम है. अगर यह पैरामीटर उपलब्ध नहीं कराया गया है, तो रैंडम तरीके से जनरेट किए गए यूयूआईडी का इस्तेमाल किया जाएगा.--region=${REGION}वह भौगोलिक क्षेत्र है जहां नौकरी के लिए आवेदन को प्रोसेस किया जाएगा.--deps-bucket=${BUCKET}वह जगह है जहां आपकी लोकल Python फ़ाइल को सर्वरलेस एनवायरमेंट में चलाने से पहले अपलोड किया जाता है.--jars=gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.26.0.jarमें, Spark रनटाइम एनवायरमेंट में spark-bigquery-connector के लिए जार शामिल होता है.--history-server-cluster=projects/${GOOGLE_CLOUD_PROJECT}/regions/${REGION}/clusters/${PHS_CLUSTER}, परसिस्टेंट हिस्ट्री सर्वर का पूरी तरह क्वालिफ़ाइड नाम है. यहां Spark इवेंट का डेटा (कंसोल आउटपुट से अलग) सेव किया जाता है. इसे Spark यूज़र इंटरफ़ेस (यूआई) से देखा जा सकता है.- आखिर में मौजूद
--का मतलब है कि इसके बाद जो भी लिखा जाएगा वह प्रोग्राम के लिए रनटाइम आर्ग्युमेंट होगा. इस मामले में, आपको अपनी बकेट का नाम सबमिट करना होगा. यह नाम, नौकरी के लिए ज़रूरी है.
बैच सबमिट करने पर, आपको यह आउटपुट दिखेगा.
Batch [citibike-job] submitted.
कुछ मिनटों के बाद, आपको नौकरी से जुड़े मेटाडेटा के साथ-साथ यह आउटपुट दिखेगा.
+----------------+------+ |start_station_id| count| +----------------+------+ | 519|551078| | 497|423334| | 435|403795| | 426|384116| | 293|372255| | 402|367194| | 285|344546| | 490|330378| | 151|318700| | 477|311403| +----------------+------+ Batch [citibike-job] finished.
अगले सेक्शन में, आपको इस जॉब के लॉग ढूंढने का तरीका बताया जाएगा.
कुछ और सुविधाएं
Spark Serverless की मदद से, आपके पास अपने जॉब चलाने के लिए अतिरिक्त विकल्प होते हैं.
- आपके पास कस्टम डॉकर इमेज बनाने का विकल्प होता है, जिस पर आपका जॉब चलता है. यह Python और R लाइब्रेरी जैसी अन्य डिपेंडेंसी को शामिल करने का एक शानदार तरीका है.
- Hive मेटाडेटा को ऐक्सेस करने के लिए, अपने जॉब को Dataproc Metastore इंस्टेंस से कनेक्ट किया जा सकता है.
- ज़्यादा कंट्रोल के लिए, Dataproc Serverless, Spark प्रॉपर्टी के छोटे सेट के कॉन्फ़िगरेशन के साथ काम करता है.
4. Dataproc की मेट्रिक और ऑब्ज़र्वअबिलिटी
Dataproc बैचेज़ कंसोल में, आपके सभी Dataproc Serverless जॉब की सूची दिखती है. कंसोल में, आपको हर जॉब का बैच आईडी, जगह, स्थिति, बनाने का समय, बीता हुआ समय, और टाइप दिखेगा. अपनी नौकरी के बारे में ज़्यादा जानकारी देखने के लिए, उसके बैच आईडी पर क्लिक करें.
इस पेज पर, आपको मॉनिटरिंग जैसी जानकारी दिखेगी. इससे पता चलता है कि आपके जॉब ने समय के साथ कितने बैच स्पार्क एक्ज़ीक्यूटर का इस्तेमाल किया. इससे यह पता चलता है कि यह अपने-आप कितना स्केल हुआ.
जानकारी टैब में, आपको नौकरी के बारे में ज़्यादा मेटाडेटा दिखेगा. इसमें नौकरी के साथ सबमिट किए गए सभी तर्क और पैरामीटर शामिल हैं.
इस पेज से सभी लॉग भी ऐक्सेस किए जा सकते हैं. Dataproc Serverless के जॉब चलाने पर, तीन अलग-अलग तरह के लॉग जनरेट होते हैं:
- सेवा-लेवल
- कंसोल आउटपुट
- Spark इवेंट की लॉगिंग
सेवा-स्तर, इसमें Dataproc Serverless सेवा से जनरेट किए गए लॉग शामिल होते हैं. इनमें ऐसी चीज़ें शामिल हैं जैसे कि Dataproc Serverless, अपने-आप स्केलिंग के लिए अतिरिक्त सीपीयू का अनुरोध करता है. इन्हें देखने के लिए, लॉग देखें पर क्लिक करें. इससे Cloud Logging खुल जाएगा.
Console output को Output में जाकर देखा जा सकता है. यह जॉब से जनरेट किया गया आउटपुट है. इसमें वह मेटाडेटा भी शामिल होता है जिसे Spark, जॉब शुरू करते समय प्रिंट करता है. साथ ही, इसमें जॉब में शामिल किए गए प्रिंट स्टेटमेंट भी शामिल होते हैं.
Spark इवेंट लॉगिंग को Spark यूज़र इंटरफ़ेस (यूआई) से ऐक्सेस किया जा सकता है. आपने अपने Spark जॉब को परसिस्टेंट हिस्ट्री सर्वर दिया है. इसलिए, Spark हिस्ट्री सर्वर देखें पर क्लिक करके, Spark यूज़र इंटरफ़ेस (यूआई) को ऐक्सेस किया जा सकता है. इसमें पहले से चल रहे Spark जॉब की जानकारी होती है. आधिकारिक Spark के दस्तावेज़ में जाकर, Spark यूज़र इंटरफ़ेस (यूआई) के बारे में ज़्यादा जानें.
5. Dataproc Templates: BQ -> GCS
Dataproc टेंप्लेट ओपन सोर्स टूल हैं. ये क्लाउड में डेटा प्रोसेसिंग के टास्क को और आसान बनाने में मदद करते हैं. ये Dataproc Serverless के लिए रैपर के तौर पर काम करते हैं. इनमें डेटा इंपोर्ट और एक्सपोर्ट करने से जुड़े कई टास्क के लिए टेंप्लेट शामिल होते हैं. जैसे:
BigQuerytoGCSऔरGCStoBigQueryGCStoBigTableGCStoJDBCऔरJDBCtoGCSHivetoBigQueryMongotoGCSऔरGCStoMongo
पूरी सूची README में उपलब्ध है.
इस सेक्शन में, BigQuery से GCS में डेटा एक्सपोर्ट करने के लिए, Dataproc टेंप्लेट का इस्तेमाल किया जाएगा.
रेपो का क्लोन बनाएं
रेपो को क्लोन करें और python फ़ोल्डर में जाएं.
git clone https://github.com/GoogleCloudPlatform/dataproc-templates.git cd dataproc-templates/python
एनवायरमेंट को कॉन्फ़िगर करना
अब एनवायरमेंट वैरिएबल सेट किए जाएंगे. Dataproc टेंप्लेट, आपके प्रोजेक्ट आईडी के लिए एनवायरमेंट वैरिएबल GCP_PROJECT का इस्तेमाल करते हैं. इसलिए, इसे GOOGLE_CLOUD_PROJECT. के बराबर सेट करें
export GCP_PROJECT=${GOOGLE_CLOUD_PROJECT}
आपका क्षेत्र, पहले से ही एनवायरमेंट में सेट होना चाहिए. अगर ऐसा नहीं है, तो यहां सेट करें.
export REGION=<region>
Dataproc टेंप्लेट, BigQuery जॉब को प्रोसेस करने के लिए spark-bigquery-conector का इस्तेमाल करते हैं. इसके लिए, यूआरआई को एनवायरमेंट वैरिएबल JARS में शामिल करना ज़रूरी है. JARS वैरिएबल सेट करें.
export JARS="gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.26.0.jar"
टेंप्लेट पैरामीटर कॉन्फ़िगर करना
सेवा के इस्तेमाल के लिए, स्टेजिंग बकेट का नाम सेट करें.
export GCS_STAGING_LOCATION=gs://${BUCKET}
इसके बाद, नौकरी के हिसाब से कुछ वैरिएबल सेट किए जाएंगे. इनपुट टेबल के लिए, आपको फिर से BigQuery NYC Citibike डेटासेट का रेफ़रंस देना होगा.
BIGQUERY_GCS_INPUT_TABLE=bigquery-public-data.new_york_citibike.citibike_trips
आपके पास csv, parquet, avro या json में से किसी एक को चुनने का विकल्प होता है. इस कोडलैब के लिए, CSV फ़ाइल चुनें. अगले सेक्शन में, फ़ाइल टाइप बदलने के लिए Dataproc टेंप्लेट इस्तेमाल करने का तरीका बताया गया है.
BIGQUERY_GCS_OUTPUT_FORMAT=csv
आउटपुट मोड को overwrite पर सेट करें. आपके पास overwrite, append, ignore या errorifexists. में से किसी एक को चुनने का विकल्प होता है
BIGQUERY_GCS_OUTPUT_MODE=overwrite
GCS के आउटपुट की जगह को अपने बकेट में मौजूद पाथ के तौर पर सेट करें.
BIGQUERY_GCS_OUTPUT_LOCATION=gs://${BUCKET}/BQtoGCS
टेंप्लेट चलाना
नीचे दिए गए BIGQUERYTOGCS टेंप्लेट को चलाएं. इसके लिए, इसे नीचे बताएं और वे इनपुट पैरामीटर दें जिन्हें आपने सेट किया है.
./bin/start.sh \
-- --template=BIGQUERYTOGCS \
--bigquery.gcs.input.table=${BIGQUERY_GCS_INPUT_TABLE} \
--bigquery.gcs.output.format=${BIGQUERY_GCS_OUTPUT_FORMAT} \
--bigquery.gcs.output.mode=${BIGQUERY_GCS_OUTPUT_MODE} \
--bigquery.gcs.output.location=${BIGQUERY_GCS_OUTPUT_LOCATION}
आउटपुट में काफ़ी नॉइज़ होगा. हालांकि, एक मिनट के बाद आपको यह दिखेगा.
Batch [5766411d6c78444cb5e80f305308d8f8] submitted. ... Batch [5766411d6c78444cb5e80f305308d8f8] finished.
यह पुष्टि की जा सकती है कि फ़ाइलें जनरेट की गई हैं या नहीं. इसके लिए, यहां दिया गया तरीका अपनाएं.
gsutil ls ${BIGQUERY_GCS_OUTPUT_LOCATION}
डिफ़ॉल्ट रूप से, Spark डेटा की मात्रा के हिसाब से कई फ़ाइलों में डेटा लिखता है. इस मामले में, आपको जनरेट की गई करीब 30 फ़ाइलें दिखेंगी. Spark की आउटपुट फ़ाइलों के नाम, part- से शुरू होते हैं. इसके बाद, पांच अंकों की संख्या (पार्ट नंबर) और हैश स्ट्रिंग होती है. ज़्यादा डेटा के लिए, Spark आम तौर पर कई फ़ाइलों में लिखता है. फ़ाइल के नाम का उदाहरण part-00000-cbf69737-867d-41cc-8a33-6521a725f7a0-c000.csv है.
6. Dataproc टेंप्लेट: CSV से Parquet
अब आपको Dataproc टेंप्लेट का इस्तेमाल करके, GCS में मौजूद डेटा को एक फ़ाइल टाइप से दूसरे फ़ाइल टाइप में बदलना होगा. इसके लिए, GCSTOGCS का इस्तेमाल करें. यह टेंप्लेट SparkSQL का इस्तेमाल करता है. साथ ही, इसमें SparkSQL क्वेरी सबमिट करने का विकल्प भी मिलता है. इससे ट्रांसफ़ॉर्मेशन के दौरान, अतिरिक्त प्रोसेसिंग की जा सकती है.
एनवायरमेंट वैरिएबल की पुष्टि करना
पुष्टि करें कि GCP_PROJECT, REGION, और GCS_STAGING_BUCKET को पिछले सेक्शन से सेट किया गया हो.
echo ${GCP_PROJECT}
echo ${REGION}
echo ${GCS_STAGING_LOCATION}
टेंप्लेट पैरामीटर सेट करना
अब आपको GCStoGCS के लिए कॉन्फ़िगरेशन पैरामीटर सेट करने होंगे. इनपुट फ़ाइलों की जगह की जानकारी से शुरू करें. ध्यान दें कि यह एक डायरेक्ट्री है, न कि कोई फ़ाइल. डायरेक्ट्री में मौजूद सभी फ़ाइलों को प्रोसेस किया जाएगा. इसे BIGQUERY_GCS_OUTPUT_LOCATION पर सेट करें.
GCS_TO_GCS_INPUT_LOCATION=${BIGQUERY_GCS_OUTPUT_LOCATION}
इनपुट फ़ाइल का फ़ॉर्मैट सेट करें.
GCS_TO_GCS_INPUT_FORMAT=csv
आउटपुट का पसंदीदा फ़ॉर्मैट सेट करें. आपके पास parquet, json, avro या csv फ़ॉर्मैट चुनने का विकल्प होता है.
GCS_TO_GCS_OUTPUT_FORMAT=parquet
आउटपुट मोड को overwrite पर सेट करें. आपके पास overwrite, append, ignore या errorifexists. में से किसी एक को चुनने का विकल्प होता है
GCS_TO_GCS_OUTPUT_MODE=overwrite
आउटपुट की जगह सेट करें.
GCS_TO_GCS_OUTPUT_LOCATION=gs://${BUCKET}/GCStoGCS
टेंप्लेट चलाना
GCStoGCS टेंप्लेट चलाएं.
./bin/start.sh \
-- --template=GCSTOGCS \
--gcs.to.gcs.input.location=${GCS_TO_GCS_INPUT_LOCATION} \
--gcs.to.gcs.input.format=${GCS_TO_GCS_INPUT_FORMAT} \
--gcs.to.gcs.output.format=${GCS_TO_GCS_OUTPUT_FORMAT} \
--gcs.to.gcs.output.mode=${GCS_TO_GCS_OUTPUT_MODE} \
--gcs.to.gcs.output.location=${GCS_TO_GCS_OUTPUT_LOCATION}
आउटपुट में काफ़ी नॉइज़ होगा, लेकिन एक मिनट के बाद आपको इस तरह का मैसेज दिखेगा.
Batch [c198787ba8e94abc87e2a0778c05ec8a] submitted. ... Batch [c198787ba8e94abc87e2a0778c05ec8a] finished.
यह पुष्टि की जा सकती है कि फ़ाइलें जनरेट की गई हैं या नहीं. इसके लिए, यहां दिया गया तरीका अपनाएं.
gsutil ls ${GCS_TO_GCS_OUTPUT_LOCATION}
इस टेंप्लेट की मदद से, SparkSQL क्वेरी भी उपलब्ध कराई जा सकती हैं. इसके लिए, टेंप्लेट को gcs.to.gcs.temp.view.name और gcs.to.gcs.sql.query पास करें. इससे GCS में डेटा लिखने से पहले, डेटा पर SparkSQL क्वेरी चलाने की सुविधा मिलती है.
7. संसाधन हटाना
इस कोडलैब को पूरा करने के बाद, अपने GCP खाते पर बेवजह शुल्क लगने से बचने के लिए:
- आपने जिस एनवायरमेंट के लिए Cloud Storage बकेट बनाया है उसे मिटाएं.
gsutil rm -r gs://${BUCKET}
- आपके परसिस्टेंट हिस्ट्री सर्वर के लिए इस्तेमाल किए गए Dataproc क्लस्टर को मिटाएं.
gcloud dataproc clusters delete ${PHS_CLUSTER_NAME} \
--region=${REGION}
- Dataproc Serverless की जॉब मिटाएं. बैच कंसोल पर जाएं. इसके बाद, जिस जॉब को मिटाना है उसके बगल में मौजूद बॉक्स पर क्लिक करें. इसके बाद, मिटाएं पर क्लिक करें.
अगर आपने यह प्रोजेक्ट सिर्फ़ इस कोडलैब के लिए बनाया है, तो आपके पास इसे मिटाने का विकल्प भी है:
- GCP Console में, प्रोजेक्ट पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- बॉक्स में प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
8. आगे क्या करना है
यहां दिए गए संसाधनों से, Serverless Spark का फ़ायदा पाने के अन्य तरीकों के बारे में ज़्यादा जानकारी मिलती है:
- Cloud Composer का इस्तेमाल करके, Dataproc Serverless वर्कफ़्लो को ऑर्केस्ट्रेट करने का तरीका जानें.
- Dataproc Serverless को Kubeflow Pipelines के साथ इंटिग्रेट करने का तरीका जानें.