CSV ব্যবহার করে Databricks থেকে Spanner-এ ETL উল্টে দিন

১. GCS এবং Dataflow ব্যবহার করে Databricks থেকে Spanner পর্যন্ত একটি রিভার্স ETL পাইপলাইন তৈরি করুন।

ভূমিকা

এই কোডল্যাবে, আপনি গুগল ক্লাউড স্টোরেজে সংরক্ষিত CSV ফাইল ব্যবহার করে ডেটাব্রিকস থেকে স্প্যানার পর্যন্ত একটি রিভার্স ETL পাইপলাইন তৈরি করবেন। প্রচলিতভাবে, ETL (এক্সট্র্যাক্ট, ট্রান্সফর্ম, লোড) পাইপলাইনগুলো ডেটা অ্যানালিটিক্সের জন্য অপারেশনাল ডেটাবেস থেকে ডেটাব্রিকসের মতো ডেটা ওয়্যারহাউসে ডেটা স্থানান্তর করে। একটি রিভার্স ETL পাইপলাইন এর বিপরীত কাজ করে: এটি ডেটা ওয়্যারহাউস থেকে সংগৃহীত ও প্রক্রিয়াজাত ডেটাকে আবার অপারেশনাল সিস্টেমে ফিরিয়ে নিয়ে আসে, যেখানে এটি অ্যাপ্লিকেশনগুলোকে শক্তি জোগাতে, ব্যবহারকারী-মুখী ফিচার সরবরাহ করতে, বা রিয়েল-টাইম সিদ্ধান্ত গ্রহণের জন্য ব্যবহৃত হতে পারে।

লক্ষ্য হলো ডেটাব্রিকস টেবিল থেকে একটি নমুনা ডেটাসেটকে স্প্যানারে স্থানান্তর করা, যা উচ্চ-প্রাপ্যতা সম্পন্ন অ্যাপ্লিকেশনের জন্য আদর্শ একটি বিশ্বব্যাপী বিতরণকৃত রিলেশনাল ডেটাবেস।

এটি অর্জন করতে, মধ্যবর্তী ধাপ হিসেবে গুগল ক্লাউড স্টোরেজ (GCS) এবং ডেটাফ্লো ব্যবহার করা হয়। নিচে ডেটা প্রবাহের একটি বিশদ বিবরণ এবং এই আর্কিটেকচারের পেছনের যুক্তি তুলে ধরা হলো:

  1. ডেটাব্রিকস থেকে গুগল ক্লাউড স্টোরেজ (GCS)-এ CSV ফরম্যাটে:
  • প্রথম ধাপ হলো ডেটাব্রিকস থেকে ডেটাগুলোকে একটি উন্মুক্ত ও সার্বজনীন ফরম্যাটে বের করে আনা। বহনযোগ্য ডেটা ফাইল তৈরির জন্য CSV-তে এক্সপোর্ট করা একটি প্রচলিত ও সহজ পদ্ধতি। এই ফাইলগুলো GCS-এ স্টেজ করা হবে, যা একটি পরিবর্ধনযোগ্য ও টেকসই অবজেক্ট স্টোরেজ সমাধান প্রদান করে।
  1. GCS থেকে স্প্যানারে (ডেটাফ্লো-এর মাধ্যমে):
  • GCS থেকে ডেটা পড়া এবং স্প্যানারে লেখার জন্য কাস্টম স্ক্রিপ্ট লেখার পরিবর্তে, গুগল ডেটাফ্লো ব্যবহার করা হয়, যা একটি সম্পূর্ণ পরিচালিত ডেটা প্রসেসিং পরিষেবা। ডেটাফ্লো বিশেষভাবে এই ধরনের কাজের জন্য আগে থেকে তৈরি টেমপ্লেট সরবরাহ করে। "GCS Text to Cloud Spanner" টেমপ্লেটটি ব্যবহার করে কোনো ডেটা প্রসেসিং কোড না লিখেই উচ্চ-ক্ষমতাসম্পন্ন ও সমান্তরালভাবে ডেটা ইম্পোর্ট করা যায়, যা ডেভেলপমেন্টের জন্য প্রয়োজনীয় সময় বাঁচায়।

আপনি যা শিখবেন

  • ডেটাব্রিক্সে কীভাবে ডেটা লোড করবেন
  • কীভাবে একটি GCS বাকেট তৈরি করবেন
  • ডেটাব্রিকস টেবিলকে CSV ফরম্যাটে GCS-এ কীভাবে এক্সপোর্ট করবেন
  • কীভাবে একটি স্প্যানার ইনস্ট্যান্স সেট আপ করবেন
  • ডেটাফ্লো ব্যবহার করে স্প্যানারে CSV টেবিল লোড করার পদ্ধতি

২. স্থাপন, প্রয়োজনীয়তা ও সীমাবদ্ধতা

পূর্বশর্ত

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

গুগল ক্লাউড প্ল্যাটফর্ম আইএএম অনুমতি

এই কোডল্যাবের সমস্ত ধাপগুলি সম্পাদন করার জন্য গুগল অ্যাকাউন্টের নিম্নলিখিত অনুমতিগুলির প্রয়োজন হবে।

পরিষেবা অ্যাকাউন্ট

iam.serviceAccountKeys.create

সার্ভিস অ্যাকাউন্ট তৈরি করার সুযোগ দেয়।

স্প্যানার

spanner.instances.create

একটি নতুন স্প্যানার ইনস্ট্যান্স তৈরি করার সুযোগ দেয়।

spanner.databases.create

DDL স্টেটমেন্ট চালানোর মাধ্যমে তৈরি করার অনুমতি দেয়

spanner.databases.updateDdl

ডাটাবেসে টেবিল তৈরি করার জন্য DDL স্টেটমেন্ট চালানোর সুযোগ দেয়।

গুগল ক্লাউড স্টোরেজ

storage.buckets.create

এক্সপোর্ট করা Parquet ফাইলগুলো সংরক্ষণ করার জন্য একটি নতুন GCS বাকেট তৈরি করার সুযোগ দেয়।

storage.objects.create

এক্সপোর্ট করা Parquet ফাইলগুলোকে GCS বাকেটে লেখার অনুমতি দেয়।

storage.objects.get

BigQuery-কে GCS বাকেট থেকে Parquet ফাইলগুলো পড়ার অনুমতি দেয়।

storage.objects.list

BigQuery-কে GCS বাকেটে থাকা Parquet ফাইলগুলির তালিকা তৈরি করার অনুমতি দেয়।

ডেটাফ্লো

Dataflow.workitems.lease

ডেটাফ্লো থেকে ওয়ার্ক আইটেম দাবি করার সুযোগ দেয়।

Dataflow.workitems.sendMessage

ডেটাফ্লো ওয়ার্কারকে ডেটাফ্লো সার্ভিসে বার্তা ফেরত পাঠানোর অনুমতি দেয়।

Logging.logEntries.create

ডেটাফ্লো ওয়ার্কারদের গুগল ক্লাউড লগিং-এ লগ এন্ট্রি লেখার অনুমতি দেয়।

সুবিধার জন্য, এই অনুমতিগুলো অন্তর্ভুক্ত থাকা পূর্বনির্ধারিত ভূমিকাগুলো ব্যবহার করা যেতে পারে।

roles/resourcemanager.projectIamAdmin

roles/iam.serviceAccountKeyAdmin

roles/spanner.instanceAdmin

roles/spanner.databaseAdmin

roles/storage.admin

roles/dataflow.serviceAgent

roles/dataflow.worker

roles/dataflow.serviceAgent

সীমাবদ্ধতা

সিস্টেমগুলোর মধ্যে ডেটা স্থানান্তর করার সময় ডেটা টাইপের পার্থক্য সম্পর্কে সচেতন থাকা গুরুত্বপূর্ণ।

  • ডেটাব্রিকস থেকে CSV: এক্সপোর্ট করার সময়, ডেটাব্রিকস ডেটা টাইপগুলো সাধারণ টেক্সট উপস্থাপনায় রূপান্তরিত হয়।
  • CSV থেকে স্প্যানার: ইম্পোর্ট করার সময়, এটা নিশ্চিত করা প্রয়োজন যে টার্গেট স্প্যানার ডেটা টাইপগুলো CSV ফাইলের স্ট্রিং রিপ্রেজেন্টেশনের সাথে সামঞ্জস্যপূর্ণ। এই ল্যাবটি এক সেট সাধারণ টাইপ ম্যাপিংয়ের মাধ্যমে নির্দেশনা প্রদান করে।

পুনঃব্যবহারযোগ্য বৈশিষ্ট্য সেটআপ করুন

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

  • GCP_REGION - এটি সেই নির্দিষ্ট অঞ্চল যেখানে GCP রিসোর্সগুলো অবস্থিত হবে। অঞ্চলগুলোর তালিকা এখানে পাওয়া যাবে।
  • GCP_PROJECT - ব্যবহারযোগ্য GCP প্রজেক্ট আইডি।
  • GCP_BUCKET_NAME - যে GCS বাকেটটি তৈরি করা হবে তার নাম, এবং যেখানে ডেটা ফাইলগুলো সংরক্ষণ করা হবে।
export GCP_REGION = <GCP REGION HERE> 
export GCP_PROJECT= <GCP PROJECT HERE>
export GCS_BUCKET_NAME = <GCS BUCKET NAME HERE>
export SPANNER_INSTANCE = <SPANNER INSTANCE ID HERE>
export SPANNER_DB = <SPANNER DATABASE ID HERE>

ডেটাব্রিকস

এই ল্যাবের জন্য, GCS-এ একটি বাহ্যিক ডেটা অবস্থান নির্ধারণের সুযোগ দিতে GCP-তে হোস্ট করা একটি Databricks অ্যাকাউন্ট প্রয়োজন।

গুগল ক্লাউড

এই ল্যাবের জন্য একটি গুগল ক্লাউড প্রজেক্ট প্রয়োজন।

গুগল ক্লাউড প্রজেক্ট

প্রজেক্ট হলো গুগল ক্লাউডে ব্যবস্থাপনার একটি মৌলিক একক। যদি কোনো প্রশাসক ব্যবহারের জন্য একটি প্রজেক্ট প্রদান করে থাকেন, তবে এই ধাপটি এড়িয়ে যাওয়া যেতে পারে।

এইভাবে CLI ব্যবহার করে একটি প্রজেক্ট তৈরি করা যায়:

gcloud projects create $GCP_PROJECT
gcloud config set project $GCP_PROJECT

প্রজেক্ট তৈরি ও পরিচালনা সম্পর্কে এখানে আরও জানুন।

স্প্যানার সেট আপ করুন

স্প্যানার ব্যবহার শুরু করতে, আপনাকে একটি ইনস্ট্যান্স এবং একটি ডেটাবেস প্রোভিশন করতে হবে। স্প্যানার ইনস্ট্যান্স কনফিগার এবং তৈরি করার বিষয়ে বিস্তারিত তথ্য এখানে পাওয়া যাবে।

ইনস্ট্যান্স তৈরি করুন

gcloud spanner instances create $SPANNER_INSTANCE \
--config=regional-$GCP_REGION \
--description="Codelabs Snowflake RETL" \
--processing-units=100 \
--edition=ENTERPRISE

ডাটাবেস তৈরি করুন

gcloud spanner databases create $SPANNER_DB \
--instance=$SPANNER_INSTANCE

৩. একটি গুগল ক্লাউড স্টোরেজ বাকেট তৈরি করুন

স্প্যানারে ইম্পোর্ট করার আগে, স্নোফ্লেক দ্বারা তৈরি CSV ডেটা ফাইলগুলো সাময়িকভাবে সংরক্ষণের জন্য গুগল ক্লাউড স্টোরেজ (GCS) ব্যবহার করা হবে।

বালতি তৈরি করুন

একটি নির্দিষ্ট অঞ্চলে স্টোরেজ বাকেট তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

gcloud storage buckets create gs://$GCS_BUCKET_NAME --location=$GCP_REGION

বাকেট তৈরি যাচাই করুন

কমান্ডটি সফল হলে, সমস্ত বাকেট তালিকাভুক্ত করে ফলাফলটি যাচাই করুন। নতুন বাকেটটি ফলাফলের তালিকায় দেখা যাবে। বাকেট রেফারেন্সগুলিতে সাধারণত বাকেটের নামের সামনে gs:// উপসর্গটি দেখা যায়।

gcloud storage ls | grep gs://$GCS_BUCKET_NAME

লেখার অনুমতি পরীক্ষা করুন

এই ধাপটি নিশ্চিত করে যে স্থানীয় পরিবেশটি সঠিকভাবে প্রমাণীকৃত এবং নতুন তৈরি করা বাকেটে ফাইল লেখার জন্য প্রয়োজনীয় অনুমতি রয়েছে।

echo "Hello, GCS" | gcloud storage cp - gs://$GCS_BUCKET_NAME/hello.txt

আপলোড করা ফাইলটি যাচাই করুন

বাকেটে থাকা অবজেক্টগুলো তালিকাভুক্ত করুন। এইমাত্র আপলোড করা ফাইলটির সম্পূর্ণ পাথ দেখা যাবে।

gcloud storage ls gs://$GCS_BUCKET_NAME

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

gs://$GCS_BUCKET_NAME/hello.txt

একটি বাকেটের মধ্যে থাকা কোনো অবজেক্টের বিষয়বস্তু দেখতে, gcloud storage cat ব্যবহার করা যেতে পারে।

gcloud storage cat gs://$GCS_BUCKET_NAME/hello.txt

ফাইলটির বিষয়বস্তু দৃশ্যমান হওয়া উচিত:

Hello, GCS

টেস্ট ফাইলটি পরিষ্কার করুন

ক্লাউড স্টোরেজ বাকেটটি এখন সেট আপ করা হয়েছে। অস্থায়ী পরীক্ষার ফাইলটি এখন মুছে ফেলা যাবে।

gcloud storage rm gs://$GCS_BUCKET_NAME/hello.txt

আউটপুটটি মুছে ফেলার বিষয়টি নিশ্চিত করবে:

Removing gs://$GCS_BUCKET_NAME/hello.txt...
/ [1 objects]
Operation completed over 1 objects.

৪. ডেটাব্রিকস থেকে জিসিএস-এ রপ্তানি

এখন, GCS-এর সাথে নিরাপদে সংযোগ স্থাপন এবং ডেটা এক্সপোর্ট করার জন্য Databricks পরিবেশটি কনফিগার করা হবে।

পরিচয়পত্র তৈরি করুন

  1. বাম দিকের মেনুতে, ক্যাটালগ- এ ক্লিক করুন।
  2. ক্যাটালগ পৃষ্ঠার শীর্ষে এক্সটার্নাল ডেটা (External Data) উপলব্ধ থাকলে, সেটিতে ক্লিক করুন। অন্যথায়, কানেক্ট (Connect) ড্রপডাউনে ক্লিক করুন এবং তারপরে ক্রেডেনশিয়ালস (Credentials) -এ ক্লিক করুন।
  3. আপনি যদি ইতিমধ্যে ক্রেডেনশিয়ালস ট্যাবে না থাকেন, তবে সেখানে যান।
  4. ক্রেডেনশিয়াল তৈরি করুন -এ ক্লিক করুন
  5. ক্রেডেনশিয়াল টাইপের জন্য GCP Service Account নির্বাচন করুন
  6. ক্রেডেনশিয়াল নামের জন্য codelabs-retl-credentials লিখুন।
  7. তৈরি করতে ক্লিক করুন
  8. ডায়ালগ বক্স থেকে সার্ভিস অ্যাকাউন্টের ইমেলটি কপি করুন এবং 'Done'-এ ক্লিক করুন।

পুনরায় ব্যবহারের জন্য এই সার্ভিস অ্যাকাউন্টটি আপনার শেল ইনস্ট্যান্সের একটি এনভায়রনমেন্ট ভেরিয়েবলে সেট করুন:

export GCP_SERVICE_ACCOUNT=<Your service account>

ডেটাব্রিকসকে GCS অনুমতি প্রদান করুন

এখন, Snowflake সার্ভিস অ্যাকাউন্টকে GCS বাকেটে লেখার অনুমতি দিতে হবে।

gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
    --member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
    --role="roles/storage.objectAdmin"

gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
    --member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
    --role="roles/storage.legacyBucketReader"

বাহ্যিক অবস্থান তৈরি করুন

  1. পৃষ্ঠার শীর্ষে থাকা ব্রেড ক্রাম্বস ব্যবহার করে ক্রেডেনশিয়ালস পৃষ্ঠায় ফিরে যান।
  2. এক্সটার্নাল লোকেশন ট্যাবে যান
  3. বাহ্যিক অবস্থান তৈরি করতে ক্লিক করুন
  4. বাহ্যিক অবস্থানের নাম codelabs-retl-gcs এ সেট করুন
  5. স্টোরেজ টাইপ GCP হিসেবে রাখুন
  6. আপনার বাকেট পাথটি URL- এ সেট করুন।
  7. স্টোরেজ ক্রেডেনশিয়াল codelabs-retl-credentials এ সেট করুন
  8. তৈরি করতে ক্লিক করুন
  9. নিশ্চিতকরণের পর, তৈরি করুন- এ ক্লিক করুন।

ক্যাটালগ এবং স্কিমা তৈরি করুন

  1. বাম দিকের মেনুতে, ক্যাটালগ- এ ক্লিক করুন।
  2. Create-এ ক্লিক করুন, তারপর একটি ক্যাটালগ তৈরি করুন।
  3. ক্যাটালগের নাম retl_tpch_project এ সেট করুন
  4. টাইপকে Standard সেট করুন
  5. বাহ্যিক অবস্থান হিসেবে codelabs-retl-gcs নির্বাচন করুন
  6. তৈরি করতে ক্লিক করুন
  7. ক্যাটালগ তালিকা থেকে retl_tpch_project এ ক্লিক করুন
  8. স্কিমা তৈরি করুন -এ ক্লিক করুন
  9. স্কিমার নাম tpch_data তে সেট করুন
  10. স্টোরেজ লোকেশন হিসেবে codelabs-retl-gcs নির্বাচন করুন।
  11. তৈরি করতে ক্লিক করুন

ডেটা CSV হিসাবে রপ্তানি করুন

এখন ডেটা রপ্তানির জন্য প্রস্তুত। নমুনা TPC-H ডেটাসেটটি আমাদের নতুন টেবিলটি নির্ধারণ করতে ব্যবহৃত হবে, যা বাহ্যিকভাবে CSV হিসেবে সংরক্ষিত হবে।

প্রথমে, নমুনা ডেটাগুলো ওয়ার্কস্পেসের একটি নতুন টেবিলে কপি করুন। এটি করার জন্য, একটি কোয়েরি থেকে SQL কোড চালাতে হবে।

  1. বাম দিকের মেনুতে SQL-এর অধীনে Queries- এ ক্লিক করুন।
  2. Create query বাটনে ক্লিক করুন
  3. রান বাটনের পাশে, ওয়ার্কস্পেসটি retl_tpch_project এ সেট করুন।
CREATE TABLE retl_tpch_project.tpch_data.regional_sales_csv
USING CSV
LOCATION 'gs://<Your bucket name>/regional_sales_csv'
OPTIONS (
  header "false",
  delimiter ","
)
AS
SELECT
    n.n_name AS nation_name,
    c.c_mktsegment AS market_segment,
    YEAR(o.o_orderdate) AS order_year,
    o.o_orderpriority AS order_priority,
    COUNT(o.o_orderkey) AS total_order_count,
    ROUND(SUM(o.o_totalprice), 2) AS total_revenue,
    COUNT(DISTINCT c.c_custkey) AS unique_customer_count
FROM samples.tpch.orders AS o
INNER JOIN samples.tpch.customer AS c
    ON o.o_custkey = c.c_custkey
INNER JOIN samples.tpch.nation AS n
    ON c.c_nationkey = n.n_nationkey
GROUP BY 1, 2, 3, 4;

GCS-এ ডেটা যাচাই করুন

Databricks দ্বারা তৈরি ফাইলগুলো দেখতে GCS বাকেটটি চেক করুন।

gcloud storage ls gs://$GCS_BUCKET_NAME/regional_sales_csv/

_SUCCESS এবং লগ ফাইলগুলোর পাশাপাশি এক বা একাধিক .csv ফাইলও দেখা যাবে।

৫. ডেটাফ্লো ব্যবহার করে স্প্যানারে ডেটা লোড করুন

GCS থেকে স্প্যানারে CSV ডেটা ইম্পোর্ট করার জন্য গুগল-প্রদত্ত একটি ডেটাফ্লো টেমপ্লেট ব্যবহার করা হবে।

স্প্যানার টেবিল তৈরি করুন

প্রথমে, স্প্যানারে গন্তব্য টেবিলটি তৈরি করুন। স্কিমাটি অবশ্যই CSV ফাইলগুলোর ডেটার সাথে সামঞ্জস্যপূর্ণ হতে হবে।

gcloud spanner databases ddl update $SPANNER_DB \
  --instance=$SPANNER_INSTANCE \
  --ddl="$(cat <<EOF
CREATE TABLE regional_sales (
    nation_name STRING(MAX),
    market_segment STRING(MAX),
    order_year INT64,
    order_priority STRING(MAX),
    total_order_count INT64,
    total_revenue NUMERIC,
    unique_customer_count INT64
) PRIMARY KEY (nation_name, market_segment, order_year, order_priority);
EOF
)"

ডেটাফ্লো ম্যানিফেস্ট তৈরি করুন

ডেটাফ্লো টেমপ্লেটের জন্য একটি 'ম্যানিফেস্ট' ফাইল প্রয়োজন। এটি একটি JSON ফাইল যা টেমপ্লেটকে বলে দেয় সোর্স ডেটা ফাইলগুলো কোথায় খুঁজে পাওয়া যাবে এবং কোন স্প্যানার টেবিলে সেগুলো লোড করতে হবে।

GCS বাকেটে একটি নতুন regional_sales_manifest.json ফাইল সংজ্ঞায়িত করে আপলোড করুন:

cat <<EOF | gcloud storage cp - gs://$GCS_BUCKET_NAME/regional_sales_manifest.json 
{ 
  "tables": [
    {
       "table_name": "regional_sales", 
       "file_patterns": [ 
         "gs://$GCS_BUCKET_NAME/regional_sales_csv/*.csv"
       ] 
    } 
  ] 
} 
EOF

ডেটাফ্লো এপিআই সক্রিয় করুন

ডেটাফ্লো ব্যবহার করার আগে, এটিকে প্রথমে সক্রিয় করতে হবে। এটি করার জন্য

gcloud services enable dataflow.googleapis.com --project=$GCP_PROJECT

ডেটাফ্লো জব তৈরি করুন এবং চালান

ইম্পোর্ট জবটি এখন চালানোর জন্য প্রস্তুত। এই কমান্ডটি GCS_Text_to_Cloud_Spanner টেমপ্লেট ব্যবহার করে একটি ডেটাফ্লো জব চালু করে।

কমান্ডটি দীর্ঘ এবং এতে বেশ কয়েকটি প্যারামিটার রয়েছে। নিচে এর একটি বিশদ বিবরণ দেওয়া হলো:

  • --gcs-location : GCS-এ আগে থেকে তৈরি টেমপ্লেটের পথ।
  • --region : যে অঞ্চলে ডেটাফ্লো জবটি রান করবে।
  • --parameters : টেমপ্লেটের জন্য নির্দিষ্ট কী-ভ্যালু জোড়গুলোর একটি তালিকা:
  • instanceId , databaseId : লক্ষ্য স্প্যানার ইনস্ট্যান্স এবং ডাটাবেস।
  • importManifest : সদ্য তৈরি করা ম্যানিফেস্ট ফাইলের GCS পাথ।
gcloud dataflow jobs run spanner-import-from-gcs \
  --gcs-location=gs://dataflow-templates/latest/GCS_Text_to_Cloud_Spanner \
  --region=$GCP_REGION \
  --staging-location=gs://$GCS_BUCKET_NAME/staging \
  --parameters \
instanceId=$SPANNER_INSTANCE,\
databaseId=$SPANNER_DB,\
importManifest=gs://$GCS_BUCKET_NAME/regional_sales_manifest.json,escape='\'

নিম্নলিখিত কমান্ডের সাহায্যে ডেটাফ্লো জবের অবস্থা পরীক্ষা করা যেতে পারে।

gcloud dataflow jobs list \
    --filter="name:spanner-import-from-gcs" \
    --region="$GCP_REGION" \
    --sort-by="~creationTime" \
    --limit=1

কাজটি সম্পন্ন করতে প্রায় ৫ মিনিট সময় লাগা উচিত।

স্প্যানারে ডেটা যাচাই করুন

ডেটাফ্লো জবটি সফল হলে, স্প্যানারে ডেটা লোড হয়েছে কিনা তা যাচাই করুন।

প্রথমে সারির সংখ্যা পরীক্ষা করুন, সেটি ৪৩৭৫ হওয়া উচিত।

gcloud spanner databases execute-sql $SPANNER_DB \
--instance=$SPANNER_INSTANCE \
--sql='SELECT COUNT(*) FROM regional_sales;'

এরপর, ডেটা পরীক্ষা করার জন্য কয়েকটি সারি কোয়েরি করুন।

gcloud spanner databases execute-sql $SPANNER_DB \
--instance=$SPANNER_INSTANCE \
--sql='SELECT * FROM regional_sales LIMIT 5'

ডেটাব্রিকস টেবিল থেকে ইম্পোর্ট করা ডেটা দৃশ্যমান হওয়া উচিত।

৬. পরিষ্কার-পরিচ্ছন্নতা

পরিষ্কার করার স্প্যানার

স্প্যানার ডেটাবেস এবং ইনস্ট্যান্সটি মুছে ফেলুন।

gcloud spanner instances delete $SPANNER_INSTANCE

জিসিএস পরিষ্কার করুন

ডেটা হোস্ট করার জন্য তৈরি করা GCS Bucket-টি মুছে ফেলুন।

gcloud storage rm --recursive gs://$GCS_BUCKET_NAME

ডেটাব্রিকস পরিষ্কার করুন

ক্যাটালগ/স্কিমা/টেবিল মুছে ফেলুন

  1. আপনার ডেটাব্রিকস ইনস্ট্যান্সে সাইন ইন করুন
  2. ক্লিক করুন 20bae9c2c9097306.png বাম পাশের মেনু থেকে
  3. ক্যাটালগ তালিকা থেকে পূর্বে তৈরি করা retl_tpch_project নির্বাচন করুন।

fc566eb3fddd7477.png

  1. স্কিমা তালিকায়, তৈরি করা tpch_data নির্বাচন করুন।
  2. টেবিল তালিকা থেকে পূর্বে তৈরি করা regional_sales_csv ফাইলটি নির্বাচন করুন।
  3. ক্লিক করে টেবিলের বিকল্পগুলি প্রসারিত করুন df6dbe6356f141c6.png এবং ডিলিট নির্বাচন করুন
  4. টেবিলটি মুছে ফেলার জন্য কনফার্মেশন ডায়ালগে থাকা ডিলিট বাটনে ক্লিক করুন।
  5. টেবিলটি মুছে ফেলা হলে, আপনাকে আবার স্কিমা পৃষ্ঠায় ফিরিয়ে আনা হবে।
  6. ক্লিক করে স্কিমা বিকল্পগুলি প্রসারিত করুন df6dbe6356f141c6.png এবং ডিলিট নির্বাচন করুন
  7. স্কিমাটি মুছে ফেলার জন্য কনফার্মেশন ডায়ালগে থাকা ডিলিট বাটনে ক্লিক করুন।
  8. স্কিমাটি মুছে ফেলা হলে, আপনাকে আবার ক্যাটালগ পৃষ্ঠায় ফিরিয়ে আনা হবে।
  9. যদি default স্কিমা থেকে থাকে, তবে তা মুছে ফেলার জন্য আবার ৪ থেকে ১১ নম্বর ধাপগুলো অনুসরণ করুন।
  10. ক্যাটালগ পৃষ্ঠা থেকে, ক্লিক করে ক্যাটালগ বিকল্পগুলি প্রসারিত করুন। df6dbe6356f141c6.png এবং ডিলিট নির্বাচন করুন
  11. ক্যাটালগটি মুছে ফেলার জন্য কনফার্মেশন ডায়ালগে থাকা ডিলিট বাটনে ক্লিক করুন।

বাহ্যিক ডেটার অবস্থান / পরিচয়পত্র মুছুন

  1. ক্যাটালগ স্ক্রিন থেকে, ক্লিক করুন 32d5a94ae444cd8e.png
  2. যদি আপনি ' External Data অপশনটি দেখতে না পান, তাহলে এর পরিবর্তে ' Connect ' ড্রপডাউনের অধীনে External Location তালিকাভুক্ত থাকতে পারে।
  3. পূর্বে তৈরি করা retl-gcs-location এক্সটার্নাল ডেটা লোকেশনটিতে ক্লিক করুন।
  4. বাহ্যিক অবস্থানের পৃষ্ঠা থেকে, ক্লিক করে অবস্থানের বিকল্পগুলি প্রসারিত করুন। df6dbe6356f141c6.png এবং Delete নির্বাচন করুন
  5. বাহ্যিক অবস্থানটি মুছে ফেলার জন্য নিশ্চিতকরণ ডায়ালগে ডিলিট- এ ক্লিক করুন।
  6. ক্লিক করুন e03562324c0ba85e.png
  7. পূর্বে তৈরি করা retl-gcs-credential টিতে ক্লিক করুন।
  8. ক্রেডেনশিয়াল পৃষ্ঠা থেকে, ক্লিক করে ক্রেডেনশিয়াল বিকল্পগুলি প্রসারিত করুন। df6dbe6356f141c6.png এবং Delete নির্বাচন করুন
  9. ক্রেডেনশিয়ালগুলো মুছে ফেলার জন্য কনফার্মেশন ডায়ালগে থাকা ডিলিট বাটনে ক্লিক করুন।

৭. অভিনন্দন

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

আমরা যা আলোচনা করেছি

  • ডেটাব্রিক্সে কীভাবে ডেটা লোড করবেন
  • কীভাবে একটি GCS বাকেট তৈরি করবেন
  • ডেটাব্রিকস টেবিলকে CSV ফরম্যাটে GCS-এ কীভাবে এক্সপোর্ট করবেন
  • কীভাবে একটি স্প্যানার ইনস্ট্যান্স সেট আপ করবেন
  • ডেটাফ্লো ব্যবহার করে স্প্যানারে CSV টেবিল লোড করার পদ্ধতি