Dataproc সার্ভারহীন

1. ওভারভিউ - Google Dataproc

Dataproc হল Apache Spark, Apache Flink, Presto, এবং অন্যান্য অনেক ওপেন সোর্স টুলস এবং ফ্রেমওয়ার্ক চালানোর জন্য একটি সম্পূর্ণরূপে পরিচালিত এবং অত্যন্ত পরিমাপযোগ্য পরিষেবা। ডেটা লেক আধুনিকীকরণ, ETL/ELT, এবং গ্রহের স্কেলে নিরাপদ ডেটা বিজ্ঞানের জন্য Dataproc ব্যবহার করুন। Dataproc এছাড়াও BigQuery , ক্লাউড স্টোরেজ , Vertex AI , এবং Dataplex সহ বেশ কয়েকটি Google ক্লাউড পরিষেবার সাথে সম্পূর্ণরূপে একত্রিত।

Dataproc তিনটি স্বাদে পাওয়া যায়:

  • ডেটাপ্রোক সার্ভারলেস আপনাকে অবকাঠামো এবং অটোস্কেলিং কনফিগার করার প্রয়োজন ছাড়াই PySpark কাজগুলি চালানোর অনুমতি দেয়। Dataproc সার্ভারলেস PySpark ব্যাচের কাজের চাপ এবং সেশন/নোটবুক সমর্থন করে।
  • গুগল কম্পিউট ইঞ্জিনে ডেটাপ্রোক আপনাকে ফ্লিঙ্ক এবং প্রেস্টোর মতো ওপেন সোর্স টুল ছাড়াও ইয়ার্ন-ভিত্তিক স্পার্ক ওয়ার্কলোডের জন্য একটি হ্যাডুপ ইয়ার্ন ক্লাস্টার পরিচালনা করতে দেয়। আপনি আপনার ক্লাউড-ভিত্তিক ক্লাস্টারগুলিকে অটোস্কেলিং সহ যতটা চান উল্লম্ব বা অনুভূমিক স্কেলিং দিয়ে তৈরি করতে পারেন।
  • Google Kubernetes Engine-এ Dataproc আপনাকে Spark, PySpark, SparkR বা Spark SQL জব জমা দেওয়ার জন্য আপনার GKE পরিকাঠামোতে Dataproc ভার্চুয়াল ক্লাস্টার কনফিগার করতে দেয়।

এই কোডল্যাবে, আপনি বিভিন্ন উপায়ে শিখবেন যে আপনি ডেটাপ্রোক সার্ভারলেস ব্যবহার করতে পারেন।

Apache Spark মূলত Hadoop ক্লাস্টারে চালানোর জন্য তৈরি করা হয়েছিল এবং এর রিসোর্স ম্যানেজার হিসাবে YARN ব্যবহার করেছিল। Hadoop ক্লাস্টারগুলি বজায় রাখার জন্য একটি নির্দিষ্ট দক্ষতার প্রয়োজন এবং ক্লাস্টারগুলিতে বিভিন্ন নবগুলি সঠিকভাবে কনফিগার করা হয়েছে তা নিশ্চিত করা। এটি একটি পৃথক নব সেট ছাড়াও স্পার্কের জন্য ব্যবহারকারীকে সেট করতে হবে। এটি এমন অনেক পরিস্থিতির দিকে পরিচালিত করে যেখানে বিকাশকারীরা স্পার্ক কোডে কাজ করার পরিবর্তে তাদের পরিকাঠামো কনফিগার করতে বেশি সময় ব্যয় করছে।

Dataproc সার্ভারলেস হ্যাডোপ ক্লাস্টার বা স্পার্ক ম্যানুয়ালি কনফিগার করার প্রয়োজনীয়তা দূর করে। Dataproc সার্ভারলেস Hadoop এ চলে না এবং অটোস্কেলিং সহ তার সংস্থান প্রয়োজনীয়তা নির্ধারণ করতে নিজস্ব গতিশীল সম্পদ বরাদ্দ ব্যবহার করে। স্পার্ক বৈশিষ্ট্যগুলির একটি ছোট উপসেট এখনও ডেটাপ্রোক সার্ভারলেস এর সাথে কাস্টমাইজযোগ্য, তবে বেশিরভাগ ক্ষেত্রে আপনাকে এগুলিকে টুইক করতে হবে না।

2. সেট আপ করুন

আপনি এই কোডল্যাবে ব্যবহৃত আপনার পরিবেশ এবং সংস্থানগুলি কনফিগার করে শুরু করবেন।

একটি Google ক্লাউড প্রকল্প তৈরি করুন । আপনি একটি বিদ্যমান ব্যবহার করতে পারেন.

ক্লাউড কনসোল টুলবারে ক্লিক করে ক্লাউড শেল খুলুন।

ba0bb17945a73543.png

ক্লাউড শেল একটি রেডি-টু-ব্যবহারযোগ্য শেল পরিবেশ প্রদান করে যা আপনি এই কোডল্যাবের জন্য ব্যবহার করতে পারেন।

68c4ebd2a8539764.png

ক্লাউড শেল ডিফল্টরূপে আপনার প্রকল্পের নাম সেট করবে। echo $GOOGLE_CLOUD_PROJECT চালিয়ে দুবার চেক করুন। আপনি যদি আউটপুটে আপনার প্রকল্প আইডি দেখতে না পান তবে এটি সেট করুন।

export GOOGLE_CLOUD_PROJECT=<your-project-id>

আপনার সম্পদের জন্য একটি কম্পিউট ইঞ্জিন অঞ্চল সেট করুন, যেমন us-central1 বা europe-west2

export REGION=<your-region>

এপিআই সক্ষম করুন

কোডল্যাব নিম্নলিখিত API ব্যবহার করে:

  • BigQuery
  • ডেটাপ্রোক

প্রয়োজনীয় API সক্রিয় করুন। এটি প্রায় এক মিনিট সময় নেবে এবং সম্পূর্ণ হলে একটি সাফল্যের বার্তা প্রদর্শিত হবে৷

gcloud services enable bigquery.googleapis.com
gcloud services enable dataproc.googleapis.com

নেটওয়ার্ক অ্যাক্সেস কনফিগার করুন

Dataproc সার্ভারলেস-এর জন্য Google প্রাইভেট অ্যাক্সেস সক্ষম করা প্রয়োজন যেখানে আপনি আপনার স্পার্ক কাজগুলি চালাবেন কারণ স্পার্ক ড্রাইভার এবং নির্বাহকদের শুধুমাত্র ব্যক্তিগত আইপি রয়েছে৷ default সাবনেটে সক্রিয় করতে নিম্নলিখিতটি চালান।

gcloud compute networks subnets update default \
  --region=${REGION} \
  --enable-private-ip-google-access

আপনি যাচাই করতে পারেন যে Google প্রাইভেট অ্যাক্সেস নিম্নলিখিতটির মাধ্যমে সক্রিয় করা হয়েছে যা True বা False আউটপুট করবে।

gcloud compute networks subnets describe default \
  --region=${REGION} \
  --format="get(privateIpGoogleAccess)"

একটি স্টোরেজ বালতি তৈরি করুন

একটি স্টোরেজ বালতি তৈরি করুন যা এই কোডল্যাবে তৈরি সম্পদ সংরক্ষণ করতে ব্যবহার করা হবে।

আপনার বালতি জন্য একটি নাম চয়ন করুন. বালতির নাম সকল ব্যবহারকারীর জন্য বিশ্বব্যাপী অনন্য হতে হবে।

export BUCKET=<your-bucket-name>

আপনি আপনার স্পার্ক কাজগুলি চালাতে চান এমন অঞ্চলে বালতি তৈরি করুন।

gsutil mb -l ${REGION} gs://${BUCKET}

আপনি দেখতে পাচ্ছেন যে আপনার বালতিটি ক্লাউড স্টোরেজ কনসোলে উপলব্ধ। আপনি আপনার বালতি দেখতে gsutil ls চালাতে পারেন।

একটি স্থায়ী ইতিহাস সার্ভার তৈরি করুন

স্পার্ক UI ডিবাগিং টুলের একটি সমৃদ্ধ সেট এবং স্পার্ক কাজের অন্তর্দৃষ্টি প্রদান করে। সম্পূর্ণ করা Dataproc সার্ভারলেস কাজের জন্য Spark UI দেখতে, আপনাকে একটি স্থায়ী ইতিহাস সার্ভার হিসাবে ব্যবহার করার জন্য একটি একক নোড 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

স্পার্ক UI এবং ক্রমাগত ইতিহাস সার্ভার পরবর্তীতে কোডল্যাবে আরও বিস্তারিতভাবে অন্বেষণ করা হবে।

3. Dataproc ব্যাচের সাথে সার্ভারহীন স্পার্ক কাজ চালান

এই নমুনায়, আপনি New York City (NYC) Citi Bike Trips পাবলিক ডেটাসেট থেকে ডেটার একটি সেট নিয়ে কাজ করবেন। NYC সিটি বাইক হল NYC-এর মধ্যে একটি পেইড বাইক শেয়ারিং সিস্টেম৷ আপনি কিছু সাধারণ রূপান্তর করবেন এবং শীর্ষ দশটি সর্বাধিক জনপ্রিয় সিটি বাইক স্টেশন আইডি প্রিন্ট করবেন। এই নমুনাটি উল্লেখযোগ্যভাবে ওপেন সোর্স স্পার্ক-বিগকুয়েরি-কানেক্টর ব্যবহার করে স্পার্ক এবং বিগকুয়েরির মধ্যে নির্বিঘ্নে ডেটা পড়তে এবং লিখতে।

citibike.py ফাইল ধারণকারী ডিরেক্টরিতে নিম্নলিখিত Github রেপো এবং cd ক্লোন করুন।

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")

ডিফল্টরূপে ক্লাউড শেলে উপলব্ধ ক্লাউড SDK ব্যবহার করে সার্ভারলেস স্পার্ক-এ কাজটি জমা দিন। আপনার শেলে নিম্নলিখিত কমান্ডটি চালান যা সার্ভারলেস স্পার্ক জব জমা দিতে ক্লাউড 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 ব্যাচ API .
  • pyspark বোঝায় যে আপনি একটি PySpark কাজ জমা দিচ্ছেন।
  • --batch চাকরির নাম। যদি প্রদান না করা হয়, একটি এলোমেলো উৎপন্ন UUID ব্যবহার করা হবে।
  • --region=${REGION} হল ভৌগলিক অঞ্চল যেখানে কাজটি প্রক্রিয়া করা হবে৷
  • --deps-bucket=${BUCKET} হল যেখানে সার্ভারহীন পরিবেশে চলার আগে আপনার স্থানীয় পাইথন ফাইল আপলোড করা হয়।
  • --jars=gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.26.0.jar স্পার্ক রানটাইম পরিবেশে spark-bigquery-connector- এর জন্য জার অন্তর্ভুক্ত করে।
  • --history-server-cluster=projects/${GOOGLE_CLOUD_PROJECT}/regions/${REGION}/clusters/${PHS_CLUSTER} হল স্থায়ী ইতিহাস সার্ভারের সম্পূর্ণ যোগ্য নাম। এখানেই স্পার্ক ইভেন্ট ডেটা (কনসোল আউটপুট থেকে আলাদা) সংরক্ষণ করা হয় এবং স্পার্ক UI থেকে দেখা যায়।
  • ট্রেলিং -- বোঝায় যে এর বাইরে যে কোনো কিছু হবে প্রোগ্রামের জন্য রানটাইম আর্গস। এই ক্ষেত্রে, আপনি আপনার বালতির নাম জমা দিচ্ছেন, চাকরির প্রয়োজন অনুসারে।

ব্যাচ জমা দিলে আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন।

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.

পরবর্তী বিভাগে, আপনি এই কাজের জন্য লগগুলি কীভাবে সনাক্ত করবেন তা শিখবেন।

অতিরিক্ত বৈশিষ্ট্য

স্পার্ক সার্ভারলেস সহ, আপনার কাজ চালানোর জন্য আপনার কাছে অতিরিক্ত বিকল্প রয়েছে।

  • আপনি একটি কাস্টম ডকার ইমেজ তৈরি করতে পারেন যাতে আপনার কাজ চলে। এটি পাইথন এবং আর লাইব্রেরি সহ অতিরিক্ত নির্ভরতা অন্তর্ভুক্ত করার একটি দুর্দান্ত উপায়।
  • Hive মেটাডেটা অ্যাক্সেস করতে আপনি আপনার কাজের সাথে একটি Dataproc Metastore উদাহরণ সংযোগ করতে পারেন।
  • অতিরিক্ত নিয়ন্ত্রণের জন্য, Dataproc Serverless Spark বৈশিষ্ট্যের একটি ছোট সেটের কনফিগারেশন সমর্থন করে।

4. ডেটাপ্রোক মেট্রিক্স এবং পর্যবেক্ষণযোগ্যতা

Dataproc ব্যাচেস কনসোল আপনার সমস্ত Dataproc সার্ভারহীন কাজের তালিকা করে। কনসোলে, আপনি প্রতিটি কাজের ব্যাচ আইডি, অবস্থান, স্থিতি , তৈরির সময়, অতিবাহিত সময় এবং প্রকার দেখতে পাবেন। এটি সম্পর্কে আরও তথ্য দেখতে আপনার কাজের ব্যাচ আইডিতে ক্লিক করুন।

এই পৃষ্ঠায়, আপনি মনিটরিংয়ের মতো তথ্য দেখতে পাবেন যা দেখায় যে আপনার কাজটি সময়ের সাথে কতগুলি ব্যাচ স্পার্ক এক্সিকিউটর ব্যবহার করেছে (এটি কতটা অটোস্কেল হয়েছে তা নির্দেশ করে)।

বিশদ ট্যাবে আপনি কাজের সাথে জমা দেওয়া যেকোন আর্গুমেন্ট এবং প্যারামিটার সহ কাজের সম্পর্কে আরও মেটাডেটা দেখতে পাবেন।

আপনি এই পৃষ্ঠা থেকে সমস্ত লগ অ্যাক্সেস করতে পারেন। যখন Dataproc সার্ভারহীন কাজ চালানো হয়, লগের তিনটি ভিন্ন সেট তৈরি হয়:

  • আমার স্নাতকের
  • কনসোল আউটপুট
  • স্পার্ক ইভেন্ট লগিং

পরিষেবা-স্তর , লগ অন্তর্ভুক্ত করে যেগুলি Dataproc সার্ভারলেস পরিষেবা তৈরি করেছে৷ এর মধ্যে ডেটাপ্রোক সার্ভারলেস অটোস্কেলিংয়ের জন্য অতিরিক্ত সিপিইউ অনুরোধ করার মতো জিনিসগুলি অন্তর্ভুক্ত রয়েছে। আপনি View logs এ ক্লিক করে এগুলো দেখতে পারেন যা Cloud Logging খুলবে।

কনসোল আউটপুট আউটপুট অধীনে দেখা যাবে. এটি কাজের দ্বারা উত্পন্ন আউটপুট, যার মধ্যে মেটাডেটা সহ যেটি স্পার্ক একটি কাজ শুরু করার সময় প্রিন্ট করে বা চাকরিতে অন্তর্ভুক্ত করা যেকোনো প্রিন্ট স্টেটমেন্ট।

স্পার্ক ইভেন্ট লগিং স্পার্ক UI থেকে অ্যাক্সেসযোগ্য। যেহেতু আপনি একটি স্থায়ী ইতিহাস সার্ভারের সাথে আপনার স্পার্ক কাজ প্রদান করেছেন, আপনি স্পার্ক হিস্ট্রি সার্ভার দেখুন ক্লিক করে স্পার্ক UI অ্যাক্সেস করতে পারেন, যাতে আপনার পূর্বে চালানো স্পার্ক কাজের তথ্য রয়েছে৷ আপনি অফিসিয়াল স্পার্ক ডকুমেন্টেশন থেকে স্পার্ক UI সম্পর্কে আরও জানতে পারেন।

5. Dataproc টেমপ্লেট: BQ -> GCS

Dataproc টেমপ্লেট হল ওপেন সোর্স টুল যা ইন-ক্লাউড ডেটা প্রসেসিং কাজগুলিকে আরও সহজ করতে সাহায্য করে। এগুলি ডেটাপ্রোক সার্ভারলেস এর জন্য একটি মোড়ক হিসাবে কাজ করে এবং অনেকগুলি ডেটা আমদানি এবং রপ্তানি কাজের জন্য টেমপ্লেটগুলি অন্তর্ভুক্ত করে, যার মধ্যে রয়েছে:

  • BigQuerytoGCS এবং GCStoBigQuery
  • GCStoBigTable
  • GCStoJDBC এবং JDBCtoGCS
  • HivetoBigQuery
  • MongotoGCS এবং 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 ব্যবহার করে এবং URI-কে একটি পরিবেশ পরিবর্তনশীল 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}

ডিফল্টভাবে স্পার্ক ডেটার পরিমাণের উপর নির্ভর করে একাধিক ফাইলে লেখে। এই ক্ষেত্রে, আপনি প্রায় 30 টি জেনারেট করা ফাইল দেখতে পাবেন। স্পার্ক আউটপুট ফাইলের নামগুলি part দিয়ে ফর্ম্যাট করা হয় - তারপরে একটি পাঁচ অঙ্কের সংখ্যা (অংশ সংখ্যা নির্দেশ করে) এবং একটি হ্যাশ স্ট্রিং। প্রচুর পরিমাণে ডেটার জন্য, স্পার্ক সাধারণত বিভিন্ন ফাইলে লিখবে। একটি উদাহরণ ফাইলের নাম হল part-00000-cbf69737-867d-41cc-8a33-6521a725f7a0-c000.csv

6. Dataproc টেমপ্লেট: CSV to parquet

আপনি এখন ডেটাপ্রোক টেমপ্লেট ব্যবহার করবেন 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}

এই টেমপ্লেটটির সাথে, আপনার কাছে টেমপ্লেটে gcs.to.gcs.temp.view.name এবং gcs.to.gcs.sql.query পাস করে SparkSQL কোয়েরি সরবরাহ করার বিকল্প রয়েছে, একটি SparkSQL কোয়েরি আগে ডেটাতে চালানোর জন্য সক্ষম করে GCS-এ লেখা।

7. সম্পদ পরিষ্কার করুন

এই কোডল্যাবটি সম্পূর্ণ করার পরে আপনার GCP অ্যাকাউন্টে অপ্রয়োজনীয় চার্জ এড়াতে:

  1. আপনি যে পরিবেশ তৈরি করেছেন তার জন্য ক্লাউড স্টোরেজ বালতি মুছুন
gsutil rm -r gs://${BUCKET}
  1. আপনার ক্রমাগত ইতিহাস সার্ভারের জন্য ব্যবহৃত Dataproc ক্লাস্টার মুছুন
gcloud dataproc clusters delete ${PHS_CLUSTER_NAME} \
  --region=${REGION}
  1. ডেটাপ্রোক সার্ভারহীন কাজগুলি মুছুন। ব্যাচেস কনসোলে যান, আপনি মুছে ফেলতে চান এমন প্রতিটি কাজের পাশের বাক্সে ক্লিক করুন এবং মুছুন ক্লিক করুন।

আপনি যদি এই কোডল্যাবের জন্য একটি প্রকল্প তৈরি করেন তবে আপনি ঐচ্ছিকভাবে প্রকল্পটি মুছে ফেলতে পারেন:

  1. GCP কনসোলে, প্রকল্প পৃষ্ঠায় যান।
  2. প্রকল্প তালিকায়, আপনি যে প্রকল্পটি মুছতে চান সেটি নির্বাচন করুন এবং মুছুন ক্লিক করুন।
  3. বাক্সে, প্রজেক্ট আইডি টাইপ করুন এবং তারপরে প্রজেক্ট মুছে ফেলতে শাট ডাউন ক্লিক করুন।

8. পরবর্তী কি

নিম্নলিখিত সংস্থানগুলি অতিরিক্ত উপায় সরবরাহ করে যা আপনি সার্ভারলেস স্পার্কের সুবিধা নিতে পারেন: