CSV ব্যবহার করে স্নোফ্লেক থেকে স্প্যানারে ETL উল্টে দিন

১. গুগল ক্লাউড স্টোরেজ এবং ডেটাফ্লো ব্যবহার করে স্নোফ্লেক থেকে স্প্যানার পর্যন্ত একটি বিপরীত ETL পাইপলাইন তৈরি করুন।

ভূমিকা

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

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

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

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

তুমি কি শিখবে

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

2. সেটআপ, প্রয়োজনীয়তা এবং সীমাবদ্ধতা

পূর্বশর্ত

  • একটি স্নোফ্লেক অ্যাকাউন্ট।
  • স্প্যানার, ক্লাউড স্টোরেজ এবং ডেটাফ্লো API সক্ষম থাকা একটি Google ক্লাউড অ্যাকাউন্ট।
  • একটি ওয়েব ব্রাউজারের মাধ্যমে গুগল ক্লাউড কনসোলে অ্যাক্সেস।
  • গুগল ক্লাউড সিএলআই ইনস্টল করা একটি টার্মিনাল।
  • যদি আপনার Google ক্লাউড প্রতিষ্ঠানে 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 থেকে Spanner: আমদানি করার সময়, লক্ষ্য স্প্যানারের ডেটা টাইপগুলি CSV ফাইলের স্ট্রিং উপস্থাপনার সাথে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করা প্রয়োজন। এই ল্যাবটি টাইপ ম্যাপিংয়ের একটি সাধারণ সেটের মাধ্যমে নির্দেশিকা প্রদান করে।

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

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

  • GCP_REGION - নির্দিষ্ট অঞ্চল যেখানে GCP রিসোর্সগুলি অবস্থিত হবে। অঞ্চলগুলির তালিকা এখানে পাওয়া যাবে।
  • GCP_PROJECT - ব্যবহারের জন্য GCP প্রকল্প আইডি।
  • GCP_BUCKET_NAME - তৈরি করা GCS বাকেটের নাম, এবং যেখানে ডেটা ফাইলগুলি সংরক্ষণ করা হবে।
  • SPANNER_INSTANCE - স্প্যানার ইনস্ট্যান্সের জন্য যে নামটি বরাদ্দ করা হবে
  • SPANNER_DB - স্প্যানার ইনস্ট্যান্সের মধ্যে ডাটাবেসে যে নামটি বরাদ্দ করতে হবে।
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>

গুগল ক্লাউড

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

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

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

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

gcloud projects create $GCP_PROJECT
gcloud config set project $GCP_PROJECT

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

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

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

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

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) ব্যবহার করা হবে।

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

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

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.

৫. স্নোফ্লেক থেকে জিসিএসে রপ্তানি করুন

এই ল্যাবের জন্য, TPC-H ডেটাসেট ব্যবহার করা হবে, যা সিদ্ধান্ত সহায়তা সিস্টেমের জন্য একটি শিল্প-মানক মানদণ্ড। এই ডেটাসেটটি সমস্ত স্নোফ্লেক অ্যাকাউন্টে ডিফল্টরূপে উপলব্ধ।

স্নোফ্লেকে ডেটা প্রস্তুত করুন

স্নোফ্লেক অ্যাকাউন্টে লগ ইন করুন এবং একটি নতুন ওয়ার্কশিট তৈরি করুন।

স্নোফ্লেক কর্তৃক প্রদত্ত নমুনা TPC-H ডেটা অনুমতির কারণে তার ভাগ করা অবস্থান থেকে সরাসরি রপ্তানি করা যাবে না। প্রথমে, ORDERS টেবিলটি একটি পৃথক ডাটাবেস এবং স্কিমায় অনুলিপি করতে হবে।

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

  1. বাম দিকের মেনুতে, Horizon Catalog এর অধীনে, Catalog এর উপর কার্সার রাখুন, তারপর Database Explorer এ ক্লিক করুন।
  2. ডাটাবেস পৃষ্ঠায় একবার, উপরের ডানদিকে + ডাটাবেস বোতামে ক্লিক করুন।
  3. নতুন ডিবিটির নাম দিন codelabs_retl_db

একটি ওয়ার্কশিট তৈরি করুন

ডাটাবেসের বিপরীতে sql কমান্ড চালানোর জন্য, ওয়ার্কশীটের প্রয়োজন হবে।

একটি ওয়ার্কশিট তৈরি করতে:

  1. বাম দিকের মেনুতে, Work with data এর অধীনে, Projects এর উপর কার্সার রাখুন, তারপর Workspaces এ ক্লিক করুন।
  2. My Workspaces সাইড বারের অধীনে, + Add new বোতামে ক্লিক করুন এবং SQL File নির্বাচন করুন।
USE DATABASE codelabs_retl_db;

CREATE SCHEMA codelabs_retl_export;

CREATE TABLE codelabs_retl_export.regional_sales_csv 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 SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.orders AS o
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.customer AS c 
    ON o.o_custkey = c.c_custkey
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.nation AS n
    ON c.c_nationkey = n.n_nationkey
GROUP BY 
    n.n_name, 
    c.c_mktsegment, 
    YEAR(o.o_orderdate), 
    o.o_orderpriority;

SELECT COUNT(*) FROM regional_sales_csv;

আউটপুটে বলা উচিত যে 4375 সারি কপি করা হয়েছে।

GCS অ্যাক্সেস করার জন্য স্নোফ্লেক কনফিগার করুন

স্নোফ্লেককে GCS বাকেটে ডেটা লেখার অনুমতি দেওয়ার জন্য, একটি স্টোরেজ ইন্টিগ্রেশন এবং একটি স্টেজ তৈরি করতে হবে।

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

প্রথমে, স্টোরেজ ইন্টিগ্রেশন তৈরি করুন।

CREATE OR REPLACE STORAGE INTEGRATION gcs_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = 'GCS'
  ENABLED = TRUE
  -- Grant Snowflake permission to write to a specific path in your bucket.
  STORAGE_ALLOWED_LOCATIONS = ('gcs://<Your bucket name>/sample_orders');

এরপর, স্নোফ্লেক যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছে তা পেতে ইন্টিগ্রেশন বর্ণনা করুন।

DESC STORAGE INTEGRATION gcs_int; 

ফলাফলে, STORAGE_GCP_SERVICE_ACCOUNT এর মানটি কপি করুন। এটি একটি ইমেল ঠিকানার মতো দেখাবে।

পরে পুনঃব্যবহারের জন্য আপনার শেল ইনস্ট্যান্সের একটি পরিবেশ ভেরিয়েবলে এই পরিষেবা অ্যাকাউন্টটি সংরক্ষণ করুন।

export GCP_SERVICE_ACCOUNT=<Your service account>

স্নোফ্লেকের জন্য GCS-কে অনুমতি দিন

এখন, স্নোফ্লেক পরিষেবা অ্যাকাউন্টকে 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"

একটি পর্যায় তৈরি করুন এবং ডেটা রপ্তানি করুন

এখন অনুমতিগুলি সেট করা হয়ে গেছে, স্নোফ্লেক ওয়ার্কশিটে ফিরে যান। ইন্টিগ্রেশন ব্যবহার করে এমন একটি স্টেজ তৈরি করুন, এবং তারপর SAMPLE_ORDERS টেবিল ডেটা সেই স্টেজে রপ্তানি করতে COPY INTO কমান্ড ব্যবহার করুন।

CREATE OR REPLACE STAGE retl_gcs_stage
    URL = 'gcs://<Your bucket name>/regional_sales_csv'
    STORAGE_INTEGRATION = gcs_int
    -- Define the output file format
    FILE_FORMAT = (TYPE = 'CSV');

COPY INTO @retl_gcs_stage/regional_sales_csv
FROM (SELECT * FROM codelabs_retl_export.regional_sales_csv)
FILE_FORMAT = (TYPE = CSV, COMPRESSION = NONE);

ফলাফল প্যানেলে, rows_unloaded 1500000 মান সহ দৃশ্যমান হওয়া উচিত।

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

স্নোফ্লেক তৈরি করা ফাইলগুলি দেখতে GCS বাকেটটি পরীক্ষা করুন। এটি নিশ্চিত করে যে রপ্তানি সফল হয়েছে।

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

এক বা একাধিক নম্বরযুক্ত CSV ফাইল দৃশ্যমান হওয়া উচিত।

gs://your-bucket-name/regional_sales_csv/regional_sales_csv_0_0_0.csv
...

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

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

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

প্রথমে, স্প্যানারে ডেস্টিনেশন টেবিল তৈরি করুন। স্কিমাটি 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

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

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

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

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

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 বাকেটটি মুছে ফেলুন।

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

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

ডাটাবেস বাদ দিন

  1. বাম দিকের মেনুতে, Horizon Catalog এর অধীনে, Catalog এর উপর কার্সার রাখুন, তারপর Database Explorer এ যান।
  2. বিকল্পগুলি প্রসারিত করতে CODELABS_RETL_DB ডাটাবেসের ডানদিকে ... এ ক্লিক করুন এবং ড্রপ নির্বাচন করুন
  3. পপ আপ হওয়া নিশ্চিতকরণ ডায়ালগে, Drop Database নির্বাচন করুন

ওয়ার্কবুক মুছে ফেলুন

  1. বাম দিকের মেনুতে, Work with data এর অধীনে, Projects এর উপর কার্সার রাখুন, তারপর Workspaces এ ক্লিক করুন।
  2. মাই ওয়ার্কস্পেস সাইড বারে, এই ল্যাবের জন্য ব্যবহৃত বিভিন্ন ওয়ার্কস্পেস ফাইলের উপর কার্সার রাখুন ... অতিরিক্ত বিকল্পগুলি দেখানোর জন্য এবং এটিতে ক্লিক করুন।
  3. পপ আপ হওয়া নিশ্চিতকরণ ডায়ালগে Delete নির্বাচন করুন এবং তারপর আবার Delete করুন
  4. এই ল্যাবের জন্য তৈরি করা সমস্ত sql ওয়ার্কস্পেস ফাইলের জন্য এটি করুন।

৮. অভিনন্দন

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

আমরা যা কভার করেছি

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