Google ক্লাউড ডেটাফ্লো সহ নোটবুক ব্যবহার করা

১. ভূমিকা

ক্লাউড-ডেটাফ্লো.png

গুগল ক্লাউড ডেটাফ্লো

সর্বশেষ হালনাগাদ: ২০২৩-জুলাই-৫

ডেটাফ্লো কী?

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

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

দ্রুত গতিতে স্ট্রিমিং ডেটা অ্যানালিটিক্স

ডেটাফ্লো কম ডেটা ল্যাটেন্সিতে দ্রুত ও সরলীকৃত স্ট্রিমিং ডেটা পাইপলাইন তৈরি করতে সক্ষম করে।

কার্যক্রম ও ব্যবস্থাপনা সহজ করুন

ডেটাফ্লো-এর সার্ভারবিহীন পদ্ধতি ডেটা ইঞ্জিনিয়ারিংয়ের কাজের অতিরিক্ত পরিচালনগত বোঝা দূর করে, ফলে টিমগুলো সার্ভার ক্লাস্টার পরিচালনার পরিবর্তে প্রোগ্রামিংয়ের ওপর মনোযোগ দিতে পারে।

মালিকানার মোট খরচ কমান

রিসোর্স অটোস্কেলিং এবং ব্যয়-সাশ্রয়ী ব্যাচ প্রসেসিং ক্ষমতার সমন্বয়ে, ডেটাফ্লো অতিরিক্ত খরচ না করেই আপনার মৌসুমী ও আকস্মিক কাজের চাপ সামলানোর জন্য কার্যত সীমাহীন সক্ষমতা প্রদান করে।

মূল বৈশিষ্ট্য

স্বয়ংক্রিয় সম্পদ ব্যবস্থাপনা এবং গতিশীল কাজের ভারসাম্য পুনঃস্থাপন

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

অনুভূমিক স্বয়ংক্রিয় স্কেলিং

সর্বোত্তম থ্রুপুটের জন্য কর্মী সম্পদের অনুভূমিক স্বয়ংক্রিয় স্কেলিং সামগ্রিকভাবে উন্নততর মূল্য-কর্মক্ষমতা অনুপাত প্রদান করে।

ব্যাচ প্রক্রিয়াকরণের জন্য নমনীয় রিসোর্স সময়সূচী মূল্য নির্ধারণ

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

এর অংশ হিসেবে আপনি যা চালাবেন

JupyterLab নোটবুকের সাথে Apache Beam ইন্টারেক্টিভ রানার ব্যবহার করে আপনি একটি রিড-ইভ্যাল-প্রিন্ট-লুপ (REPL) ওয়ার্কফ্লোতে পুনরাবৃত্তিমূলকভাবে পাইপলাইন তৈরি করতে, আপনার পাইপলাইন গ্রাফ পরীক্ষা করতে এবং স্বতন্ত্র PCollections পার্স করতে পারেন। এই Apache Beam নোটবুকগুলো Vertex AI Workbench-এর মাধ্যমে পাওয়া যায়, যা একটি পরিচালিত পরিষেবা এবং এতে সর্বশেষ ডেটা সায়েন্স ও মেশিন লার্নিং ফ্রেমওয়ার্ক আগে থেকে ইনস্টল করা নোটবুক ভার্চুয়াল মেশিন হোস্ট করা হয়।

এই কোডল্যাবটি অ্যাপাচি বিম নোটবুক দ্বারা প্রবর্তিত কার্যকারিতার উপর আলোকপাত করে।

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

  • কীভাবে একটি নোটবুক ইনস্ট্যান্স তৈরি করবেন
  • একটি মৌলিক পাইপলাইন তৈরি করা
  • অসীম উৎস থেকে ডেটা পড়া
  • ডেটা কল্পনা করা
  • নোটবুক থেকে একটি ডেটাফ্লো জব চালু করা
  • নোটবুক সংরক্ষণ করা

আপনার যা যা লাগবে

  • বিলিং সক্ষম একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট।
  • গুগল ক্লাউড ডেটাফ্লো এবং গুগল ক্লাউড পাবসাব সক্রিয় করা হয়েছে।

২. প্রস্তুতি গ্রহণ

  1. ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।

নিশ্চিত করুন যে আপনার নিম্নলিখিত API-গুলি সক্রিয় করা আছে:

  • ডেটাফ্লো এপিআই
  • ক্লাউড পাব/সাব এপিআই
  • কম্পিউটার ইঞ্জিন
  • নোটবুক এপিআই

আপনি API ও পরিষেবা পৃষ্ঠাটি দেখে এটি যাচাই করতে পারেন।

এই নির্দেশিকায়, আমরা একটি পাব/সাব সাবস্ক্রিপশন থেকে ডেটা পড়ব, তাই নিশ্চিত করুন যে কম্পিউট ইঞ্জিন ডিফল্ট সার্ভিস অ্যাকাউন্টের এডিটর রোল আছে, অথবা তাকে পাব/সাব এডিটর রোলটি প্রদান করুন

৩. অ্যাপাচি বিম নোটবুক দিয়ে শুরু করা

একটি অ্যাপাচি বিম নোটবুক ইনস্ট্যান্স চালু করা

  1. কনসোলে ডেটাফ্লো চালু করুন:

  1. বাম দিকের মেনু ব্যবহার করে ওয়ার্কবেঞ্চ পৃষ্ঠাটি নির্বাচন করুন।
  2. নিশ্চিত করুন যে আপনি 'ব্যবহারকারী-পরিচালিত নোটবুক' ট্যাবে আছেন।
  3. টুলবারে, নতুন নোটবুক- এ ক্লিক করুন।
  4. অ্যাপাচি বিম > জিপিইউ ছাড়া নির্বাচন করুন।
  5. নতুন নোটবুক পৃষ্ঠায়, নোটবুক ভিএম-এর জন্য একটি সাবনেটওয়ার্ক নির্বাচন করুন এবং তৈরি করুন- এ ক্লিক করুন।
  6. লিঙ্কটি সক্রিয় হলে ওপেন জুপিটারল্যাব-এ ক্লিক করুন। ভার্টেক্স এআই ওয়ার্কবেঞ্চ একটি নতুন অ্যাপাচি বিম নোটবুক ইনস্ট্যান্স তৈরি করে।

৪. পাইপলাইন তৈরি করা

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

ফাইল > নতুন > নোটবুক- এ যান এবং অ্যাপাচি বিম ২.৪৭ বা তার পরবর্তী সংস্করণের একটি কার্নেল নির্বাচন করুন।

আপনার নোটবুকে কোড যোগ করা শুরু করুন

  • প্রতিটি সেকশন থেকে কোড কপি করে আপনার নোটবুকের একটি নতুন সেলে পেস্ট করুন।
  • সেলটি চালান

6bd3dd86cc7cf802.png

JupyterLab নোটবুকের সাথে Apache Beam ইন্টারেক্টিভ রানার ব্যবহার করে আপনি একটি রিড-ইভ্যাল-প্রিন্ট-লুপ (REPL) ওয়ার্কফ্লোতে পুনরাবৃত্তিমূলকভাবে পাইপলাইন তৈরি করতে, আপনার পাইপলাইন গ্রাফ পরিদর্শন করতে এবং স্বতন্ত্র PCollections পার্স করতে পারেন।

আপনার নোটবুক ইনস্ট্যান্সে অ্যাপাচি বিম ইনস্টল করা আছে, তাই আপনার নোটবুকে interactive_runner এবং interactive_beam মডিউলগুলো অন্তর্ভুক্ত করুন।

import apache_beam as beam
from apache_beam.runners.interactive.interactive_runner import InteractiveRunner
import apache_beam.runners.interactive.interactive_beam as ib

আপনার নোটবুক যদি অন্যান্য গুগল পরিষেবা ব্যবহার করে, তাহলে নিম্নলিখিত ইম্পোর্ট স্টেটমেন্টগুলো যোগ করুন:

from apache_beam.options import pipeline_options
from apache_beam.options.pipeline_options import GoogleCloudOptions
import google.auth

ইন্টারঅ্যাক্টিভিটি বিকল্পগুলি সেট করা

নিম্নলিখিতটি ডেটা সংগ্রহের সময়কাল ৬০ সেকেন্ডে সেট করে। আপনি যদি আরও দ্রুত কাজটি করতে চান, তবে এর সময়কাল কমিয়ে দিন, যেমন '১০ সেকেন্ড'।

ib.options.recording_duration = '60s'

অতিরিক্ত ইন্টারেক্টিভ বিকল্পগুলির জন্য, interactive_beam.options ক্লাসটি দেখুন।

একটি InteractiveRunner অবজেক্ট ব্যবহার করে পাইপলাইনটি শুরু করুন।

# Setting up the Apache Beam pipeline options.
options = pipeline_options.PipelineOptions()

# Set the pipeline mode to stream the data from Pub/Sub.
options.view_as(pipeline_options.StandardOptions).streaming = True

# Sets the project to the default project in your current Google Cloud environment.
# The project will be used for creating a subscription to the Pub/Sub topic.
_, options.view_as(GoogleCloudOptions).project = google.auth.default()

# The Google Cloud PubSub topic for this example.
topic = "projects/pubsub-public-data/topics/shakespeare-kinglear"

p = beam.Pipeline(InteractiveRunner(), options=options)

ডেটা পড়া এবং কল্পনা করা

নিম্নলিখিত উদাহরণটি একটি অ্যাপাচি বিম পাইপলাইন দেখায় যা প্রদত্ত পাব/সাব টপিকে একটি সাবস্ক্রিপশন তৈরি করে এবং সেই সাবস্ক্রিপশন থেকে ডেটা পড়ে।

words = p | "read" >> beam.io.ReadFromPubSub(topic=topic)

পাইপলাইনটি উৎস থেকে উইন্ডো অনুযায়ী শব্দ গণনা করে। এটি নির্দিষ্ট উইন্ডোইং তৈরি করে, যেখানে প্রতিটি উইন্ডোর সময়কাল ১০ সেকেন্ড।

windowed_words = (words
   | "window" >> beam.WindowInto(beam.window.FixedWindows(10)))

ডেটা উইন্ডো করার পর, প্রতিটি উইন্ডো অনুযায়ী শব্দ গণনা করা হয়।

windowed_word_counts = (windowed_words
   | "count" >> beam.combiners.Count.PerElement())

ডেটা কল্পনা করা

show() মেথডটি নোটবুকে প্রাপ্ত PCollection-টিকে দৃশ্যমান করে।

ib.show(windowed_word_counts, include_window_info=True)

শো পদ্ধতিটি একটি PCollection-কে সারণী আকারে প্রদর্শন করে।

আপনার ডেটার ভিজ্যুয়ালাইজেশন প্রদর্শন করতে, show() মেথডে visualize_data=True পাস করুন। একটি নতুন সেল যোগ করুন:

ib.show(windowed_word_counts, include_window_info=True, visualize_data=True)

আপনি আপনার ভিজ্যুয়ালাইজেশনে একাধিক ফিল্টার প্রয়োগ করতে পারেন। নিম্নলিখিত ভিজ্যুয়ালাইজেশনটি আপনাকে লেবেল এবং অক্ষ অনুসারে ফিল্টার করার সুযোগ দেয়:

শো মেথডটি একটি PCollection-কে ফিল্টারযোগ্য UI এলিমেন্টের একটি সমৃদ্ধ সেট হিসেবে প্রদর্শন করে।

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

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

windowed_lower_word_counts = (windowed_words
   | "to lower case" >> beam.Map(lambda word: word.lower())
   | "count lowered" >> beam.combiners.Count.PerElement())

` collect() ` মেথডটি একটি Pandas DataFrame-এ আউটপুট প্রদান করে।

ib.collect(windowed_lower_word_counts, include_window_info=True)

Pandas DataFrame-এ একটি PCollection-কে উপস্থাপনকারী collect মেথড।

৬. (ঐচ্ছিক) আপনার নোটবুক থেকে ডেটাফ্লো জব চালু করা

  1. ডেটাফ্লোতে জব চালানোর জন্য আপনার অতিরিক্ত অনুমতির প্রয়োজন। নিশ্চিত করুন যে Compute Engine-এর ডিফল্ট সার্ভিস অ্যাকাউন্টের Editor রোলটি আছে, অথবা এটিকে নিম্নলিখিত IAM রোলগুলি প্রদান করুন :
  • ডেটাফ্লো অ্যাডমিন
  • ডেটাফ্লো কর্মী
  • স্টোরেজ অ্যাডমিন, এবং
  • পরিষেবা অ্যাকাউন্ট ব্যবহারকারী (roles/iam.serviceAccountUser)

ডকুমেন্টেশনে ভূমিকাগুলো সম্পর্কে আরও দেখুন।

  1. (ঐচ্ছিক) আপনার নোটবুক ব্যবহার করে ডেটাফ্লো জব চালানোর আগে, কার্নেল রিস্টার্ট করুন, সমস্ত সেল পুনরায় চালান এবং আউটপুট যাচাই করুন।
  2. নিম্নলিখিত ইম্পোর্ট স্টেটমেন্টগুলো মুছে ফেলুন:
from apache_beam.runners.interactive.interactive_runner import InteractiveRunner
import apache_beam.runners.interactive.interactive_beam as ib
  1. নিম্নলিখিত ইম্পোর্ট স্টেটমেন্টটি যোগ করুন:
from apache_beam.runners import DataflowRunner
  1. নিম্নলিখিত রেকর্ডিং সময়কাল বিকল্পটি সরিয়ে ফেলুন:
ib.options.recording_duration = '60s'
  1. আপনার পাইপলাইন অপশনগুলিতে নিম্নলিখিতগুলি যোগ করুন। আপনাকে ক্লাউড স্টোরেজ লোকেশনটি আপনার নিজের কোনো বাকেটের দিকে নির্দেশ করার জন্য অ্যাডজাস্ট করতে হবে, অথবা আপনি এই উদ্দেশ্যে একটি নতুন বাকেট তৈরি করতে পারেন। এছাড়াও আপনি রিজিয়ন ভ্যালুটি us-central1 থেকে পরিবর্তন করতে পারেন।
# Set the Google Cloud region to run Dataflow.
options.view_as(GoogleCloudOptions).region = 'us-central1'

# Choose a Cloud Storage location.
dataflow_gcs_location = 'gs://<change me>/dataflow'

# Choose a location for your output files
output_gcs_location = '%s/results/' % dataflow_gcs_location


# Set the staging location. This location is used to stage the
# Dataflow pipeline and SDK binary.
options.view_as(GoogleCloudOptions).staging_location = '%s/staging' % dataflow_gcs_location

# Set the temporary location. This location is used to store temporary files
# or intermediate results before outputting to the sink.
options.view_as(GoogleCloudOptions).temp_location = '%s/temp' % dataflow_gcs_location
  1. beam.Pipeline() এর কনস্ট্রাক্টরে InteractiveRunner এর পরিবর্তে DataflowRunner ব্যবহার করুন। p হলো আপনার পাইপলাইন তৈরির সময়কার পাইপলাইন অবজেক্ট।
p = beam.Pipeline(DataflowRunner(), options=options)
  1. আপনার কোড থেকে ইন্টারেক্টিভ কলগুলো সরিয়ে ফেলুন। উদাহরণস্বরূপ, আপনার কোড থেকে show() , collect() , head() , show_graph() , এবং watch() সরিয়ে ফেলুন।
  2. যেকোনো ফলাফল দেখতে হলে আপনাকে একটি সিঙ্ক যোগ করতে হবে। আগের অংশে আমরা নোটবুকে ফলাফলগুলো দেখছিলাম, কিন্তু এবার আমরা কাজটি এই নোটবুকের বাইরে—ডেটাফ্লো-তে—চালাচ্ছি। তাই, আমাদের ফলাফলের জন্য একটি বাহ্যিক স্থানের প্রয়োজন। এই উদাহরণে, আমরা GCS (গুগল ক্লাউড স্টোরেজ)-এর টেক্সট ফাইলগুলোতে ফলাফলগুলো লিখব। যেহেতু এটি ডেটা উইন্ডোয়িং সহ একটি স্ট্রিমিং পাইপলাইন, তাই আমরা প্রতিটি উইন্ডোর জন্য একটি করে টেক্সট ফাইল তৈরি করতে চাইব। এটি করার জন্য, আপনার পাইপলাইনে নিম্নলিখিত ধাপগুলো যোগ করুন:
result = (windowed_lower_word_counts
    | "decode words and format" >> beam.Map(lambda x: f"{x[0].decode('utf-8')}: {x[1]}")
    | "write events to file" >> beam.io.fileio.WriteToFiles(path=output_gcs_location, shards=1, max_writers_per_bundle=0))
  1. আপনার পাইপলাইন কোডের শেষে p.run() যোগ করুন।
  2. এখন আপনার নোটবুক কোডটি পর্যালোচনা করে নিশ্চিত করুন যে আপনি সমস্ত পরিবর্তন অন্তর্ভুক্ত করেছেন। এটি দেখতে অনেকটা এইরকম হওয়া উচিত:
import apache_beam as beam
from apache_beam.options import pipeline_options
from apache_beam.options.pipeline_options import GoogleCloudOptions
import google.auth
from apache_beam.runners import DataflowRunner

# Setting up the Apache Beam pipeline options.
options = pipeline_options.PipelineOptions()

# Set the pipeline mode to stream the data from Pub/Sub.
options.view_as(pipeline_options.StandardOptions).streaming = True

# Sets the project to the default project in your current Google Cloud environment.
# The project will be used for creating a subscription to the Pub/Sub topic.
_, options.view_as(GoogleCloudOptions).project = google.auth.default()

# Set the Google Cloud region to run Dataflow.
options.view_as(GoogleCloudOptions).region = 'us-central1'

# Choose a Cloud Storage location.
dataflow_gcs_location = 'gs://<change me>/dataflow'

# Choose a location for your output files
output_gcs_location = '%s/results/' % dataflow_gcs_location


# Set the staging location. This location is used to stage the
# Dataflow pipeline and SDK binary.
options.view_as(GoogleCloudOptions).staging_location = '%s/staging' % dataflow_gcs_location

# Set the temporary location. This location is used to store temporary files
# or intermediate results before outputting to the sink.
options.view_as(GoogleCloudOptions).temp_location = '%s/temp' % dataflow_gcs_location



# The Google Cloud PubSub topic for this example.
topic = "projects/pubsub-public-data/topics/shakespeare-kinglear"

p = beam.Pipeline(DataflowRunner(), options=options)
words = p | "read" >> beam.io.ReadFromPubSub(topic=topic)
windowed_words = (words
   | "window" >> beam.WindowInto(beam.window.FixedWindows(10)))

windowed_words_counts = (windowed_words
   | "count" >> beam.combiners.Count.PerElement())

windowed_lower_word_counts = (windowed_words
   | "to lower case" >> beam.Map(lambda word: word.lower())
   | "count lowered" >> beam.combiners.Count.PerElement())

result = (windowed_lower_word_counts
    | "decode words and format" >> beam.Map(lambda x: f"{x[0].decode('utf-8')}: {x[1]}")
    | "write events to file" >> beam.io.fileio.WriteToFiles(path=output_gcs_location, shards=1, max_writers_per_bundle=0))

p.run()
  1. সেলগুলো চালান।
  2. আপনি নিম্নলিখিতের অনুরূপ একটি আউটপুট দেখতে পাবেন:
<DataflowPipelineResult <Job
 clientRequestId: '20230623100011457336-8998'
 createTime: '2023-06-23T10:00:33.447347Z'
 currentStateTime: '1970-01-01T00:00:00Z'
 id: '2023-06-23_03_00_33-11346237320103246437'
 location: 'us-central1'
 name: 'beamapp-root-0623075553-503897-boh4u4wb'
 projectId: 'your-project-id'
 stageStates: []
 startTime: '2023-06-23T10:00:33.447347Z'
 steps: []
 tempFiles: []
 type: TypeValueValuesEnum(JOB_TYPE_STREAMING, 2)> at 0x7fc7e4084d60>
  1. জবটি চলছে কিনা তা যাচাই করতে, ডেটাফ্লো-এর জবস পেজে যান। আপনি তালিকায় একটি নতুন জব দেখতে পাবেন। জবটি ডেটা প্রসেস করা শুরু করতে প্রায় ৫-১০ মিনিট সময় নেবে।
  2. ডেটা প্রসেসিং শুরু হয়ে গেলে, ক্লাউড স্টোরেজে যান এবং সেই ডিরেক্টরিতে নেভিগেট করুন যেখানে ডেটাফ্লো ফলাফলগুলো সংরক্ষণ করছে (আপনার নির্ধারিত output_gcs_location )। আপনি টেক্সট ফাইলগুলোর একটি তালিকা দেখতে পাবেন, যেখানে প্রতিটি উইন্ডোতে একটি করে ফাইল থাকবে। bfcc5ce9e46a8b14.png
  3. ফাইলটি ডাউনলোড করে এর বিষয়বস্তু পরীক্ষা করুন। এতে শব্দগুলোর তালিকা এবং তাদের সংখ্যা থাকা উচিত। বিকল্পভাবে, ফাইলগুলো পরীক্ষা করার জন্য কমান্ড লাইন ইন্টারফেস ব্যবহার করুন। আপনার নোটবুকের একটি নতুন সেলে নিম্নলিখিত কমান্ডটি চালিয়ে আপনি এটি করতে পারেন:
! gsutils cat gs://<your-bucket-here>/results/<file-name>
  1. আপনি এর অনুরূপ একটি আউটপুট দেখতে পাবেন:

Safer: 1

trust: 1

mercy: 1

harms: 1

far: 2

fear: 1

than: 1

take: 1

me: 1

goneril: 1

still: 1

away: 1

let: 1

too: 2

the: 1

  1. ব্যাস! আপনার তৈরি করা জবটি পরিষ্কার করতে এবং বন্ধ করতে ভুলবেন না (এই কোডল্যাবের শেষ ধাপটি দেখুন)।

একটি ইন্টারেক্টিভ নোটবুকে এই রূপান্তরটি কীভাবে সম্পাদন করতে হয় তার উদাহরণের জন্য, আপনার নোটবুক ইনস্ট্যান্সে থাকা ডেটাফ্লো ওয়ার্ড কাউন্ট নোটবুকটি দেখুন।

বিকল্পভাবে, আপনি আপনার নোটবুকটিকে একটি এক্সিকিউটেবল স্ক্রিপ্ট হিসাবে এক্সপোর্ট করতে পারেন, পূর্ববর্তী ধাপগুলো ব্যবহার করে তৈরি হওয়া .py ফাইলটি পরিবর্তন করতে পারেন এবং তারপরে আপনার পাইপলাইনটি ডেটাফ্লো সার্ভিসে ডেপ্লয় করতে পারেন

৭. আপনার নোটবুক সংরক্ষণ করা

আপনার তৈরি করা নোটবুকগুলো আপনার চলমান নোটবুক ইনস্ট্যান্সে স্থানীয়ভাবে সংরক্ষিত হয়। ডেভেলপমেন্ট চলাকালীন আপনি যদি নোটবুক ইনস্ট্যান্সটি রিসেট বা শাট ডাউন করেন, তবে সেই নতুন নোটবুকগুলো সংরক্ষিত থাকে, যতক্ষণ পর্যন্ত সেগুলো /home/jupyter ডিরেক্টরির অধীনে তৈরি হয়। তবে, যদি কোনো নোটবুক ইনস্ট্যান্স ডিলিট করা হয়, তাহলে সেই নোটবুকগুলোও ডিলিট হয়ে যায়।

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

৮. পরিষ্কার করা

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

বিকল্পভাবে, যদি আপনি শুধুমাত্র এই কোডল্যাবের উদ্দেশ্যে একটি প্রজেক্ট তৈরি করে থাকেন, তাহলে আপনি প্রজেক্টটি সম্পূর্ণভাবে বন্ধও করে দিতে পারেন।