ক্লাউড ডেটাপ্রোকে অ্যাপাচি স্পার্ক এবং জুপিটার নোটবুক

১. সংক্ষিপ্ত বিবরণ

এই ল্যাবে ক্লাউড ডেটাপ্রকে অ্যাপাচি স্পার্ক এবং জুপিটার নোটবুক কীভাবে সেট-আপ ও ব্যবহার করতে হয়, তা আলোচনা করা হবে।

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

তবে অ্যাপাচি স্পার্ক এবং জুপিটার নোটবুক সেট আপ করা ও ব্যবহার করা জটিল হতে পারে।

b9ed855863c57d6.png

ক্লাউড ডেটাপ্রোক প্রায় ৯০ সেকেন্ডের মধ্যে অ্যাপাচি স্পার্ক, জুপিটার কম্পোনেন্ট এবং কম্পোনেন্ট গেটওয়ে সহ একটি ডেটাপ্রোক ক্লাস্টার তৈরি করার সুযোগ দিয়ে এই প্রক্রিয়াটিকে দ্রুত এবং সহজ করে তোলে।

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

এই কোডল্যাবে আপনি শিখবেন কীভাবে:

  • আপনার ক্লাস্টারের জন্য একটি গুগল ক্লাউড স্টোরেজ বাকেট তৈরি করুন
  • Jupyter এবং Component Gateway ব্যবহার করে একটি Dataproc ক্লাস্টার তৈরি করুন।
  • Dataproc-এ JupyterLab ওয়েব UI অ্যাক্সেস করুন
  • Spark BigQuery Storage কানেক্টর ব্যবহার করে একটি নোটবুক তৈরি করুন।
  • একটি স্পার্ক জব চালানো এবং ফলাফলগুলো প্লট করা।

গুগল ক্লাউডে এই ল্যাবটি চালানোর মোট খরচ প্রায় ১ ডলার। ক্লাউড ডেটাপ্রোক-এর মূল্য সংক্রান্ত সম্পূর্ণ বিবরণ এখানে পাওয়া যাবে।

২. একটি প্রকল্প তৈরি করা

console.cloud.google.com- এ Google Cloud Platform কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন:

7e541d932b20c074.png

2deefc9295d114ea.png

a92a49afe05008a.png

এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

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

গুগল ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা ৩০০ ডলারের একটি বিনামূল্যে ট্রায়ালের জন্য যোগ্য।

৩. আপনার পরিবেশ প্রস্তুত করা

প্রথমে, ক্লাউড কনসোলের উপরের ডানদিকের কোণায় থাকা বোতামটিতে ক্লিক করে ক্লাউড শেল খুলুন:

a10c47ee6ca41c54.png

ক্লাউড শেল লোড হওয়ার পরে, পূর্ববর্তী ধাপ থেকে প্রজেক্ট আইডি সেট করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud config set project <project_id>

ক্লাউড কনসোলের উপরের বাম দিকে আপনার প্রজেক্টে ক্লিক করেও প্রজেক্ট আইডিটি খুঁজে পাওয়া যাবে:

b4b233632ce0c3c4.png

c7e39ffc6dec3765.png

এরপরে, Dataproc, Compute Engine এবং BigQuery Storage API-গুলো সক্রিয় করুন।

gcloud services enable dataproc.googleapis.com \
  compute.googleapis.com \
  storage-component.googleapis.com \
  bigquery.googleapis.com \
  bigquerystorage.googleapis.com

বিকল্পভাবে এটি ক্লাউড কনসোল থেকেও করা যেতে পারে। স্ক্রিনের উপরের বাম দিকের মেনু আইকনে ক্লিক করুন।

2bfc27ef9ba2ec7d.png

ড্রপ ডাউন থেকে এপিআই ম্যানেজার নির্বাচন করুন।

408af5f32c4b7c25.png

এপিআই এবং পরিষেবাগুলি সক্ষম করুন -এ ক্লিক করুন।

a9c0e84296a7ba5b.png

নিম্নলিখিত API গুলি অনুসন্ধান করুন এবং সক্রিয় করুন:

  • কম্পিউট ইঞ্জিন এপিআই
  • ডেটাপ্রোক এপিআই
  • বিগকোয়েরি এপিআই
  • বিগকোয়েরি স্টোরেজ এপিআই

৪. একটি GCS বাকেট তৈরি করুন

আপনার ডেটার সবচেয়ে কাছের অঞ্চলে একটি গুগল ক্লাউড স্টোরেজ বাকেট তৈরি করুন এবং এটিকে একটি অনন্য নাম দিন।

এটি ডেটাপ্রোক ক্লাস্টারের জন্য ব্যবহার করা হবে।

REGION=us-central1
BUCKET_NAME=<your-bucket-name>

gsutil mb -c standard -l ${REGION} gs://${BUCKET_NAME}

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

Creating gs://<your-bucket-name>/...

৫. Jupyter ও Component Gateway ব্যবহার করে আপনার Dataproc ক্লাস্টার তৈরি করুন

আপনার ক্লাস্টার তৈরি করা

আপনার ক্লাস্টারের জন্য এনভায়রনমেন্ট ভেরিয়েবল সেট করুন।

REGION=us-central1
ZONE=us-central1-a
CLUSTER_NAME=spark-jupyter
BUCKET_NAME=<your-bucket-name>

এরপর আপনার ক্লাস্টারে Jupyter নিয়ে কাজ করার জন্য প্রয়োজনীয় সমস্ত উপাদানসহ ক্লাস্টারটি তৈরি করতে এই gcloud কমান্ডটি চালান।

gcloud beta dataproc clusters create ${CLUSTER_NAME} \
 --region=${REGION} \
 --image-version=1.4 \
 --master-machine-type=n1-standard-4 \
 --worker-machine-type=n1-standard-4 \
 --bucket=${BUCKET_NAME} \
 --optional-components=ANACONDA,JUPYTER \
 --enable-component-gateway 

আপনার ক্লাস্টার তৈরি হওয়ার সময় আপনি নিম্নলিখিত আউটপুটটি দেখতে পাবেন।

Waiting on operation [projects/spark-jupyter/regions/us-central1/operations/abcd123456].
Waiting for cluster creation operation...

আপনার ক্লাস্টার তৈরি হতে প্রায় ৯০ সেকেন্ড সময় লাগবে এবং এটি প্রস্তুত হয়ে গেলে আপনি ডেটাপ্রোক ক্লাউড কনসোল UI থেকে আপনার ক্লাস্টারটি অ্যাক্সেস করতে পারবেন।

অপেক্ষা করার সময়, gcloud কমান্ডে ব্যবহৃত ফ্ল্যাগগুলো সম্পর্কে আরও জানতে আপনি নিচে পড়া চালিয়ে যেতে পারেন।

ক্লাস্টারটি তৈরি হয়ে গেলে আপনি নিম্নলিখিত আউটপুটটি দেখতে পাবেন:

Created [https://dataproc.googleapis.com/v1beta2/projects/project-id/regions/us-central1/clusters/spark-jupyter] Cluster placed in zone [us-central1-a].

gcloud dataproc create কমান্ডে ব্যবহৃত ফ্ল্যাগসমূহ

এখানে gcloud dataproc create কমান্ডে ব্যবহৃত ফ্ল্যাগগুলোর বিবরণ দেওয়া হলো।

--region=${REGION}

ক্লাস্টারটি কোথায় তৈরি করা হবে তার অঞ্চল এবং জোন নির্দিষ্ট করে। উপলব্ধ অঞ্চলগুলির তালিকা আপনি এখানে দেখতে পারেন।

--image-version=1.4

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

--bucket=${BUCKET_NAME}

ক্লাস্টারের জন্য ব্যবহার করতে আপনার পূর্বে তৈরি করা গুগল ক্লাউড স্টোরেজ বাকেটটি নির্দিষ্ট করুন। আপনি যদি কোনো GCS বাকেট সরবরাহ না করেন, তবে এটি আপনার জন্য তৈরি করে দেওয়া হবে।

আপনার ক্লাস্টার ডিলিট করে দিলেও আপনার নোটবুকগুলো এখানেই সেভ থাকবে, কারণ GCS বাকেটটি ডিলিট হয় না।

--master-machine-type=n1-standard-4
--worker-machine-type=n1-standard-4

আপনার ডেটাপ্রোক ক্লাস্টারের জন্য ব্যবহারযোগ্য মেশিনের প্রকারভেদ। উপলব্ধ মেশিনের প্রকারভেদের একটি তালিকা আপনি এখানে দেখতে পারেন।

আপনি যদি –num-workers ফ্ল্যাগটি সেট না করেন, তাহলে ডিফল্টরূপে ১টি মাস্টার নোড এবং ২টি ওয়ার্কার নোড তৈরি হয়।

--optional-components=ANACONDA,JUPYTER

ঐচ্ছিক উপাদানগুলির জন্য এই মানগুলি সেট করলে আপনার ক্লাস্টারে Jupyter এবং Anaconda-র (যা Jupyter নোটবুকের জন্য আবশ্যক) সমস্ত প্রয়োজনীয় লাইব্রেরি ইনস্টল হয়ে যাবে।

--enable-component-gateway

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

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

৬. একটি অ্যাপাচি স্পার্ক নোটবুক তৈরি করুন

JupyterLab ওয়েব ইন্টারফেসে প্রবেশ করা

ক্লাস্টারটি প্রস্তুত হয়ে গেলে, আপনি Dataproc Clusters - Cloud console- এ গিয়ে, আপনার তৈরি করা ক্লাস্টারটিতে ক্লিক করে এবং Web Interfaces ট্যাবে গিয়ে JupyterLab ওয়েব ইন্টারফেসের Component Gateway লিঙ্কটি খুঁজে নিতে পারেন।

afc40202d555de47.png

আপনি লক্ষ্য করবেন যে, আপনার কাছে জুপিটার (Jupyter) ব্যবহারের সুযোগ রয়েছে, যা হলো ক্লাসিক নোটবুক ইন্টারফেস, অথবা জুপিটারল্যাব (JupyterLab) ব্যবহারের সুযোগ রয়েছে, যাকে প্রজেক্ট জুপিটারের (Project Jupyter) পরবর্তী প্রজন্মের ইউআই (UI) হিসেবে বর্ণনা করা হয়।

JupyterLab-এ অনেক চমৎকার নতুন UI ফিচার রয়েছে। তাই আপনি যদি নোটবুক ব্যবহারে নতুন হন অথবা সর্বশেষ উন্নতিগুলো খুঁজে থাকেন, তবে JupyterLab ব্যবহার করার পরামর্শ দেওয়া হচ্ছে, কারণ অফিসিয়াল ডকুমেন্টেশন অনুযায়ী এটি অবশেষে ক্লাসিক Jupyter ইন্টারফেসকে প্রতিস্থাপন করবে।

পাইথন ৩ কার্নেল ব্যবহার করে একটি নোটবুক তৈরি করুন।

a463623f2ebf0518.png

লঞ্চার ট্যাব থেকে পাইথন ৩ নোটবুক আইকনে ক্লিক করে একটি পাইথন ৩ কার্নেল (পাইস্পার্ক কার্নেল নয়) সহ একটি নোটবুক তৈরি করুন, যা আপনাকে নোটবুকের মধ্যেই স্পার্কসেশন কনফিগার করতে এবং বিগকোয়েরি স্টোরেজ এপিআই (BigQuery Storage API) ব্যবহারের জন্য প্রয়োজনীয় স্পার্ক-বিগকোয়েরি-কানেক্টর (spark-bigquery-connector ) অন্তর্ভুক্ত করতে দেয়।

নোটবুকটির নাম পরিবর্তন করুন

196a3276ed07e1f3.png

বাম পাশের সাইডবারে অথবা উপরের নেভিগেশনে থাকা নোটবুকের নামের উপর রাইট ক্লিক করুন এবং নোটবুকটির নাম পরিবর্তন করে "BigQuery Storage & Spark DataFrames.ipynb" রাখুন।

নোটবুকে আপনার স্পার্ক কোড চালান।

fbac38062e5bb9cf.png

এই নোটবুকে আপনি spark-bigquery-connector ব্যবহার করবেন, যা BigQuery Storage API ব্যবহার করে BigQuery এবং Spark-এর মধ্যে ডেটা পড়া ও লেখার একটি টুল।

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

প্রথম সেলে আপনার ক্লাস্টারের স্ক্যালা সংস্করণটি যাচাই করুন, যাতে আপনি spark-bigquery-connector jar-এর সঠিক সংস্করণটি অন্তর্ভুক্ত করতে পারেন।

ইনপুট [1]:

!scala -version

আউটপুট [1]: f580e442576b8b1f.png একটি স্পার্ক সেশন তৈরি করুন এবং spark-bigquery-connector প্যাকেজটি অন্তর্ভুক্ত করুন।

আপনার স্ক্যালা সংস্করণ ২.১১ হলে নিম্নলিখিত প্যাকেজটি ব্যবহার করুন।

com.google.cloud.spark:spark-bigquery-with-dependencies_2.11:0.15.1-beta

আপনার স্ক্যালা সংস্করণ ২.১২ হলে নিম্নলিখিত প্যাকেজটি ব্যবহার করুন।

com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.15.1-beta

ইনপুট [2]:

from pyspark.sql import SparkSession
spark = SparkSession.builder \
 .appName('BigQuery Storage & Spark DataFrames') \
 .config('spark.jars.packages', 'com.google.cloud.spark:spark-bigquery-with-dependencies_2.11:0.15.1-beta') \
 .getOrCreate()

repl.eagerEval সক্ষম করুন

এর ফলে নতুন করে df.show() দেখানোর প্রয়োজন ছাড়াই প্রতিটি ধাপে ডেটাফ্রেমের ফলাফল আউটপুট হিসেবে পাওয়া যাবে এবং আউটপুটের ফরম্যাটিংও উন্নত হবে।

ইনপুট [3]:

spark.conf.set("spark.sql.repl.eagerEval.enabled",True)

BigQuery টেবিলটি Spark DataFrame-এ পড়ুন

একটি পাবলিক BigQuery ডেটাসেট থেকে ডেটা রিড করে একটি Spark DataFrame তৈরি করুন। এটি Spark ক্লাস্টারে ডেটা লোড করার জন্য spark-bigquery-connector এবং BigQuery Storage API ব্যবহার করে।

একটি স্পার্ক ডেটাফ্রেম তৈরি করুন এবং উইকিপিডিয়া পেজভিউ-এর জন্য বিগকোয়েরি পাবলিক ডেটাসেট থেকে ডেটা লোড করুন। আপনি লক্ষ্য করবেন যে আপনি ডেটার উপর কোনো কোয়েরি চালাচ্ছেন না, কারণ আপনি স্পার্ক-এ ডেটা লোড করার জন্য ' spark-bigquery-connector' ব্যবহার করছেন, যেখানে ডেটার প্রসেসিং সম্পন্ন হবে। যখন এই কোডটি চালানো হবে, তখন এটি আসলে টেবিলটি লোড করবে না, কারণ এটি স্পার্ক-এর একটি লেজি ইভ্যালুয়েশন এবং এক্সিকিউশন পরবর্তী ধাপে সম্পন্ন হবে।

ইনপুট [4]:

table = "bigquery-public-data.wikipedia.pageviews_2020"

df_wiki_pageviews = spark.read \
  .format("bigquery") \
  .option("table", table) \
  .option("filter", "datehour >= '2020-03-01' AND datehour < '2020-03-02'") \
  .load()

df_wiki_pageviews.printSchema()

আউটপুট [4]:

c107a33f6fc30ca.png

প্রয়োজনীয় কলামগুলো নির্বাচন করুন এবং where() ব্যবহার করে ফিল্টার প্রয়োগ করুন, যা filter() এর একটি বিকল্প নাম।

এই কোডটি চালানো হলে একটি স্পার্ক অ্যাকশন ট্রিগার হয় এবং এই পর্যায়ে বিগকোয়েরি স্টোরেজ থেকে ডেটা পড়া হয়।

ইনপুট [5]:

df_wiki_en = df_wiki_pageviews \
  .select("datehour", "wiki", "views") \
  .where("views > 1000 AND wiki in ('en', 'en.m')") \

df_wiki_en

আউটপুট [5]:

ad363cbe510d625a.png

শীর্ষ পৃষ্ঠাগুলি দেখতে শিরোনাম অনুসারে গ্রুপ করুন এবং পৃষ্ঠা দেখার সংখ্যা অনুসারে সাজান।

ইনপুট [6]:

import pyspark.sql.functions as F

df_datehour_totals = df_wiki_en \
  .groupBy("datehour") \
  .agg(F.sum('views').alias('total_views'))

df_datehour_totals.orderBy('total_views', ascending=False)

আউটপুট [6]: f718abd05afc0f4.png

৭. নোটবুকে পাইথন প্লটিং লাইব্রেরি ব্যবহার করুন

আপনার স্পার্ক জবগুলোর আউটপুট প্লট করার জন্য আপনি পাইথনে উপলব্ধ বিভিন্ন প্লটিং লাইব্রেরি ব্যবহার করতে পারেন।

স্পার্ক ডেটাফ্রেমকে পান্ডাস ডেটাফ্রেমে রূপান্তর করুন

স্পার্ক ডেটাফ্রেমটিকে পান্ডাস ডেটাফ্রেমে রূপান্তর করুন এবং ডেটআওয়ারকে ইনডেক্স হিসেবে সেট করুন। এটি তখন কাজে আসে যখন আপনি সরাসরি পাইথনে ডেটা নিয়ে কাজ করতে চান এবং পাইথনের বিভিন্ন প্লটিং লাইব্রেরি ব্যবহার করে ডেটা প্লট করতে চান।

ইনপুট [7]:

spark.conf.set("spark.sql.execution.arrow.enabled", "true")
pandas_datehour_totals = df_datehour_totals.toPandas()

pandas_datehour_totals.set_index('datehour', inplace=True)
pandas_datehour_totals.head()

আউটপুট [7]:

3df2aaa2351f028d.png

পান্ডাস ডেটাফ্রেম প্লট করা

নোটবুকে প্লটগুলো প্রদর্শন করার জন্য প্রয়োজনীয় ম্যাটপ্লটলিব (matplotlib) লাইব্রেরিটি ইম্পোর্ট করুন।

ইনপুট [8]:

import matplotlib.pyplot as plt

Pandas DataFrame থেকে লাইন চার্ট তৈরি করতে Pandas plot ফাংশনটি ব্যবহার করুন।

ইনপুট [9]:

pandas_datehour_totals.plot(kind='line',figsize=(12,6));

আউটপুট [9]: bade7042c3033594.png

নোটবুকটি GCS-এ সেভ করা হয়েছে কিনা তা পরীক্ষা করুন।

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

আপনি ক্লাউড শেলে এই gsutil কমান্ডটি ব্যবহার করে এটি পরীক্ষা করতে পারেন।

BUCKET_NAME=<your-bucket-name>
gsutil ls gs://${BUCKET_NAME}/notebooks/jupyter

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

gs://bucket-name/notebooks/jupyter/
gs://bucket-name/notebooks/jupyter/BigQuery Storage & Spark DataFrames.ipynb

৮. অপ্টিমাইজেশন টিপ - মেমরিতে ডেটা ক্যাশ করুন

এমন পরিস্থিতিও আসতে পারে যেখানে আপনি প্রতিবার BigQuery স্টোরেজ থেকে পড়ার পরিবর্তে ডেটা মেমরিতে রাখতে চান।

এই জবটি BigQuery থেকে ডেটা পড়বে এবং ফিল্টারটি BigQuery-তে পাঠাবে। এরপর Apache Spark-এ অ্যাগ্রিগেশনটি গণনা করা হবে।

import pyspark.sql.functions as F

table = "bigquery-public-data.wikipedia.pageviews_2020"

df_wiki_pageviews = spark.read \
 .format("bigquery") \
 .option("table", table) \
 .option("filter", "datehour >= '2020-03-01' AND datehour < '2020-03-02'") \
 .load()

df_wiki_en = df_wiki_pageviews \
 .select("title", "wiki", "views") \
 .where("views > 10 AND wiki in ('en', 'en.m')")

df_wiki_en_totals = df_wiki_en \
.groupBy("title") \
.agg(F.sum('views').alias('total_views'))

df_wiki_en_totals.orderBy('total_views', ascending=False)

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

import pyspark.sql.functions as F

table = "bigquery-public-data.wikipedia.pageviews_2020"

df_wiki_pageviews = spark.read \
 .format("bigquery") \
 .option("table", table) \
 .option("filter", "datehour >= '2020-03-01' AND datehour < '2020-03-02'") \
 .load()

df_wiki_all = df_wiki_pageviews \
 .select("title", "wiki", "views") \
 .where("views > 10")

# cache the data in memory
df_wiki_all.cache()

df_wiki_en = df_wiki_all \
 .where("wiki in ('en', 'en.m')")

df_wiki_en_totals = df_wiki_en \
.groupBy("title") \
.agg(F.sum('views').alias('total_views'))

df_wiki_en_totals.orderBy('total_views', ascending=False)

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

df_wiki_de = df_wiki_all \
 .where("wiki in ('de', 'de.m')")

df_wiki_de_totals = df_wiki_de \
.groupBy("title") \
.agg(F.sum('views').alias('total_views'))

df_wiki_de_totals.orderBy('total_views', ascending=False)

আপনি এটি চালিয়ে ক্যাশে মুছে ফেলতে পারেন।

df_wiki_all.unpersist()

৯. আরও ব্যবহারের উদাহরণ নোটবুক

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

১০. পরিষ্কার করুন

এই কুইকস্টার্টটি সম্পন্ন করার পর আপনার GCP অ্যাকাউন্টে অপ্রয়োজনীয় চার্জ হওয়া এড়াতে:

  1. আপনার তৈরি করা এনভায়রনমেন্টের জন্য ক্লাউড স্টোরেজ বাকেটটি মুছে ফেলুন।
  2. Dataproc এনভায়রনমেন্টটি মুছে ফেলুন

আপনি যদি শুধু এই কোডল্যাবের জন্য একটি প্রজেক্ট তৈরি করে থাকেন, তবে আপনি চাইলে প্রজেক্টটি মুছেও ফেলতে পারেন:

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

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ৩.০ জেনেরিক লাইসেন্স এবং অ্যাপাচি ২.০ লাইসেন্সের অধীনে লাইসেন্সকৃত।