বিষয়বস্তুর বিষয়:
- ToPandas() এর সাথে To_json() ব্যবহার করে JSON-তে পাইস্পার্ক ডেটাফ্রেম
- ToJSON() ব্যবহার করে JSON-তে PySpark ডেটাফ্রেম
- Write.json() ব্যবহার করে JSON-এ PySpark ডেটাফ্রেম
আসুন সমস্ত উদাহরণে একটি সাধারণ PySpark ডেটাফ্রেম বিবেচনা করি এবং উল্লিখিত ফাংশনগুলি ব্যবহার করে এটিকে JSON-এ রূপান্তর করি।
প্রয়োজনীয় মডিউল:
আপনার পরিবেশে PySpark লাইব্রেরি ইনস্টল করুন যদি এটি এখনও ইনস্টল করা না থাকে। আপনি এটি ইনস্টল করতে নিম্নলিখিত কমান্ড উল্লেখ করতে পারেন:
পিপ ইনস্টল pyspark
ToPandas() এর সাথে To_json() ব্যবহার করে JSON-তে পাইস্পার্ক ডেটাফ্রেম
to_json() পদ্ধতিটি পান্ডাস মডিউলে উপলব্ধ যা পান্ডাস ডেটাফ্রেমকে JSON-এ রূপান্তরিত করে। আমরা এই পদ্ধতিটি ব্যবহার করতে পারি যদি আমরা আমাদের PySpark ডেটাফ্রেমকে পান্ডাস ডেটাফ্রেমে রূপান্তর করি। PySpark DataFrame-কে Pandas DataFrame-এ রূপান্তর করতে toPandas() পদ্ধতি ব্যবহার করা হয়। এর পরামিতি সহ to_json() এর সিনট্যাক্স দেখি।
বাক্য গঠন:
dataframe_object.toPandas().to_json(orient,index,...)
- রূপান্তরিত JSON কে পছন্দসই বিন্যাস হিসাবে প্রদর্শন করতে Orient ব্যবহার করা হয়। এটি 'রেকর্ড', 'টেবিল', 'মান', 'কলাম', 'সূচক', 'বিভক্ত' লাগে।
- রূপান্তরিত JSON স্ট্রিং থেকে সূচী অন্তর্ভুক্ত/মুছে ফেলার জন্য সূচক ব্যবহার করা হয়। এটি 'সত্য' সেট করা হলে, সূচকগুলি প্রদর্শিত হবে। অন্যথায়, প্রাচ্য 'বিভক্ত' বা 'টেবিল' হলে সূচকগুলি প্রদর্শিত হবে না।
উদাহরণ 1: 'রেকর্ড' হিসাবে ওরিয়েন্ট
3টি সারি এবং 4টি কলাম সহ একটি 'skills_df' PySpark ডেটাফ্রেম তৈরি করুন। 'রেকর্ড' হিসাবে ওরিয়েন্ট প্যারামিটার নির্দিষ্ট করে এই ডেটাফ্রেমটিকে JSON-এ রূপান্তর করুন।
পাইসপার্ক আমদানি করুনপান্ডা আমদানি করুন
pyspark.sql থেকে SparkSession আমদানি করুন
linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()
# 3টি সারি এবং 4টি কলাম সহ দক্ষতা ডেটা
দক্ষতা =[{ 'আইডি' : 123 , 'ব্যক্তি' : 'মধু' , 'দক্ষতা' : 'পেইন্টিং' , 'পুরস্কার' : 25000 },
{ 'আইডি' : 112 , 'ব্যক্তি' : 'মৌনি' , 'দক্ষতা' : 'নৃত্য' , 'পুরস্কার' : 2000 },
{ 'আইডি' : 153 , 'ব্যক্তি' : 'তুলসী' , 'দক্ষতা' : 'পড়া' , 'পুরস্কার' : 1200 }
]
# উপরের ডেটা থেকে দক্ষতা ডেটাফ্রেম তৈরি করুন
skills_df = linuxhint_spark_app.createDataFrame(দক্ষতা)
# প্রকৃত দক্ষতা ডেটা
দক্ষতা_df.show()
# 'রেকর্ড' হিসাবে ওরিয়েন্ট সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data = skills_df.toPandas().to_json(orient= 'রেকর্ড' )
মুদ্রণ(json_skills_data)
আউটপুট:
+---+------+------+---------+
| আইডি|ব্যক্তি|পুরস্কার| দক্ষতা |
+---+------+------+---------+
| 123 | মধু | 25000 |পেইন্টিং|
| 112 | মৌনি | 2000 | নাচ |
| 153 |তুলসী | 1200 | পড়া |
+---+------+------+---------+
[{ 'আইডি' : 123 , 'ব্যক্তি' : 'মধু' , 'পুরস্কার' : 25000 , 'দক্ষতা' : 'পেইন্টিং' },{ 'আইডি' : 112 , 'ব্যক্তি' : 'মৌনি' , 'পুরস্কার' : 2000 , 'দক্ষতা' : 'নৃত্য' },{ 'আইডি' : 153 , 'ব্যক্তি' : 'তুলসী' , 'পুরস্কার' : 1200 , 'দক্ষতা' : 'পড়া' }]
আমরা দেখতে পাচ্ছি যে PySpark DataFrame মানগুলির একটি অভিধান সহ JSON অ্যারেতে রূপান্তরিত হয়েছে। এখানে, কীগুলি কলামের নাম উপস্থাপন করে এবং মানটি PySpark ডেটাফ্রেমের সারি/সেলের মানকে উপস্থাপন করে।
উদাহরণ 2: 'বিভক্ত' হিসাবে প্রাচ্য
JSON ফরম্যাট যা 'বিভক্ত' ওরিয়েন্ট দ্বারা প্রত্যাবর্তন করা হয় তাতে কলামের নাম অন্তর্ভুক্ত থাকে যেখানে কলামের তালিকা, সূচীর তালিকা এবং ডেটার তালিকা রয়েছে। নিচের 'বিভক্ত' প্রাচ্যের বিন্যাস।
# 'বিভক্ত' হিসাবে ওরিয়েন্ট সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data = skills_df.toPandas().to_json(orient= 'বিভক্ত' )
মুদ্রণ(json_skills_data)
আউটপুট:
{ 'কলাম' :[ 'আইডি' , 'ব্যক্তি' , 'পুরস্কার' , 'দক্ষতা' ], 'সূচী' :[ 0 , 1 , 2 ], 'তথ্য' :[[ 123 , 'মধু' , 25000 , 'পেইন্টিং' ],[ 112 , 'মৌনি' , 2000 , 'নৃত্য' ],[ 153 , 'তুলসী' , 1200 , 'পড়া' ]]}উদাহরণ 3: 'সূচক' হিসাবে ওরিয়েন্ট
এখানে, PySpark DataFrame থেকে প্রতিটি সারি কলামের নাম হিসাবে কী সহ একটি অভিধান আকারে অবসরপ্রাপ্ত হয়। প্রতিটি অভিধানের জন্য, সূচক অবস্থান একটি কী হিসাবে নির্দিষ্ট করা হয়।
# 'সূচী' হিসাবে ওরিয়েন্ট সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data = skills_df.toPandas().to_json(orient= 'সূচী' )
মুদ্রণ(json_skills_data)
আউটপুট:
{ '0' :{ 'আইডি' : 123 , 'ব্যক্তি' : 'মধু' , 'পুরস্কার' : 25000 , 'দক্ষতা' : 'পেইন্টিং' }, '1' :{ 'আইডি' : 112 , 'ব্যক্তি' : 'মৌনি' , 'পুরস্কার' : 2000 , 'দক্ষতা' : 'নৃত্য' }, '2' :{ 'আইডি' : 153 , 'ব্যক্তি' : 'তুলসী' , 'পুরস্কার' : 1200 , 'দক্ষতা' : 'পড়া' }}উদাহরণ 4: 'কলাম' হিসাবে প্রাচ্য
কলাম প্রতিটি রেকর্ডের জন্য কী। প্রতিটি কলামে একটি অভিধান থাকে যা সূচী সংখ্যা সহ কলামের মান নেয়।
# 'কলাম' হিসাবে ওরিয়েন্ট সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data = skills_df.toPandas().to_json(orient= 'কলাম' )
মুদ্রণ(json_skills_data)
আউটপুট:
{ 'আইডি' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'ব্যক্তি' :{ '0' : 'মধু' , '1' : 'মৌনি' , '2' : 'তুলসী' }, 'পুরস্কার' :{ '0' : 25000 , '1' : 2000 , '2' : 1200 }, 'দক্ষতা' :{ '0' : 'পেইন্টিং' , '1' : 'নৃত্য' , '2' : 'পড়া' }}উদাহরণ 5: 'মান' হিসাবে প্রাচ্য
আপনার যদি JSON-এ শুধুমাত্র মানগুলির প্রয়োজন হয় তবে আপনি 'মান' প্রাচ্যের জন্য যেতে পারেন। এটি একটি তালিকায় প্রতিটি সারি প্রদর্শন করে। অবশেষে, সমস্ত তালিকা একটি তালিকায় সংরক্ষণ করা হয়। এই JSON নেস্টেড তালিকার প্রকার।
# 'মান' হিসাবে ওরিয়েন্ট সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data = skills_df.toPandas().to_json(orient= 'মান' )
মুদ্রণ(json_skills_data)
আউটপুট:
[[ 123 , 'মধু' , 25000 , 'পেইন্টিং' ],[ 112 , 'মৌনি' , 2000 , 'নৃত্য' ],[ 153 , 'তুলসী' , 1200 , 'পড়া' ]]উদাহরণ 6: 'টেবিল' হিসাবে প্রাচ্য
'টেবিল' ওরিয়েন্ট JSON প্রদান করে যাতে কলামের ডেটা প্রকারের সাথে ফিল্ডের নাম সহ স্কিমা, প্রাথমিক কী হিসাবে সূচী এবং পান্ডাস সংস্করণ থাকে। মান সহ কলামের নাম 'ডেটা' হিসাবে প্রদর্শিত হয়।
# 'টেবিল' হিসাবে ওরিয়েন্ট সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data = skills_df.toPandas().to_json(orient= 'টেবিল' )
মুদ্রণ(json_skills_data)
আউটপুট:
{ 'স্কিমা' :{ 'ক্ষেত্র' :[{ 'নাম' : 'সূচী' , 'প্রকার' : 'পূর্ণসংখ্যা' },{ 'নাম' : 'আইডি' , 'প্রকার' : 'পূর্ণসংখ্যা' },{ 'নাম' : 'ব্যক্তি' , 'প্রকার' : 'স্ট্রিং' },{ 'নাম' : 'পুরস্কার' , 'প্রকার' : 'পূর্ণসংখ্যা' },{ 'নাম' : 'দক্ষতা' , 'প্রকার' : 'স্ট্রিং' }], 'প্রাথমিক কী' :[ 'সূচী' ], 'পান্ডাস_সংস্করণ' : '1.4.0' }, 'তথ্য' :[{ 'সূচী' : 0 , 'আইডি' : 123 , 'ব্যক্তি' : 'মধু' , 'পুরস্কার' : 25000 , 'দক্ষতা' : 'পেইন্টিং' },{ 'সূচী' : 1 , 'আইডি' : 112 , 'ব্যক্তি' : 'মৌনি' , 'পুরস্কার' : 2000 , 'দক্ষতা' : 'নৃত্য' },{ 'সূচী' : 2 , 'আইডি' : 153 , 'ব্যক্তি' : 'তুলসী' , 'পুরস্কার' : 1200 , 'দক্ষতা' : 'পড়া' }]}উদাহরণ 7: সূচক প্যারামিটার সহ
প্রথমত, আমরা সূচক প্যারামিটারটি 'True' এ সেট করে পাস করি। আপনি প্রতিটি কলামের মানের জন্য দেখতে পাবেন যে সূচকের অবস্থান একটি অভিধানে একটি কী হিসাবে ফিরে এসেছে।
দ্বিতীয় আউটপুটে, শুধুমাত্র কলামের নাম ('কলাম') এবং রেকর্ড ('ডেটা') সূচী অবস্থান ছাড়াই ফেরত দেওয়া হয় যেহেতু সূচী 'মিথ্যা' এ সেট করা আছে।
# index=True সহ to_json() ব্যবহার করে JSON এ রূপান্তর করুনjson_skills_data = skills_df.toPandas().to_json(index=True)
প্রিন্ট(json_skills_data, ' \n ' )
# index=False দিয়ে to_json() ব্যবহার করে JSON এ রূপান্তর করুন
json_skills_data= skills_df.toPandas().to_json(index=False,orient= 'বিভক্ত' )
মুদ্রণ(json_skills_data)
আউটপুট:
{ 'আইডি' :{ '0' : 123 , '1' : 112 , '2' : 153 }, 'ব্যক্তি' :{ '0' : 'মধু' , '1' : 'মৌনি' , '2' : 'তুলসী' }, 'পুরস্কার' :{ '0' : 25000 , '1' : 2000 , '2' : 1200 }, 'দক্ষতা' :{ '0' : 'পেইন্টিং' , '1' : 'নৃত্য' , '2' : 'পড়া' }}{ 'কলাম' :[ 'আইডি' , 'ব্যক্তি' , 'পুরস্কার' , 'দক্ষতা' ], 'তথ্য' :[[ 123 , 'মধু' , 25000 , 'পেইন্টিং' ],[ 112 , 'মৌনি' , 2000 , 'নৃত্য' ],[ 153 , 'তুলসী' , 1200 , 'পড়া' ]]
ToJSON() ব্যবহার করে JSON-তে PySpark ডেটাফ্রেম
toJSON() পদ্ধতিটি PySpark ডেটাফ্রেমকে JSON অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়। মূলত, এটি একটি JSON স্ট্রিং প্রদান করে যা একটি তালিকা দ্বারা বেষ্টিত। দ্য [‘{কলাম:মান,…}’,…. ] এই ফাংশন দ্বারা ফিরে যে বিন্যাস হয়. এখানে, PySpark DataFrame থেকে প্রতিটি সারি কী হিসাবে কলামের নাম সহ একটি অভিধান হিসাবে ফিরে আসে।
বাক্য গঠন:
dataframe_object.toJSON()সূচক, কলাম লেবেল এবং ডেটা টাইপের মতো পরামিতিগুলি পাস করা সম্ভব হতে পারে।
উদাহরণ:
5টি সারি এবং 4টি কলাম সহ একটি 'skills_df' PySpark ডেটাফ্রেম তৈরি করুন। toJSON() পদ্ধতি ব্যবহার করে এই ডেটাফ্রেমটিকে JSON-এ রূপান্তর করুন।
পাইসপার্ক আমদানি করুনpyspark.sql থেকে SparkSession আমদানি করুন
linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()
# 5টি সারি এবং 4টি কলাম সহ দক্ষতা ডেটা
দক্ষতা =[{ 'আইডি' : 123 , 'ব্যক্তি' : 'মধু' , 'দক্ষতা' : 'পেইন্টিং' , 'পুরস্কার' : 25000 },
{ 'আইডি' : 112 , 'ব্যক্তি' : 'মৌনি' , 'দক্ষতা' : 'সঙ্গীত/নৃত্য' , 'পুরস্কার' : 2000 },
{ 'আইডি' : 153 , 'ব্যক্তি' : 'তুলসী' , 'দক্ষতা' : 'পড়া' , 'পুরস্কার' : 1200 },
{ 'আইডি' : 173 , 'ব্যক্তি' : 'দৌড়ে' , 'দক্ষতা' : 'সঙ্গীত' , 'পুরস্কার' : 2000 },
{ 'আইডি' : 43 , 'ব্যক্তি' : 'কমলা' , 'দক্ষতা' : 'পড়া' , 'পুরস্কার' : 10000 }
]
# উপরের ডেটা থেকে দক্ষতা ডেটাফ্রেম তৈরি করুন
skills_df = linuxhint_spark_app.createDataFrame(দক্ষতা)
# প্রকৃত দক্ষতা ডেটা
দক্ষতা_df.show()
# JSON অ্যারেতে রূপান্তর করুন
json_skills_data = skills_df.toJSON().collect()
মুদ্রণ(json_skills_data)
আউটপুট:
+---+------+------+------------+| আইডি|ব্যক্তি|পুরস্কার| দক্ষতা |
+---+------+------+------------+
| 123 | মধু | 25000 | পেইন্টিং|
| 112 | মৌনি | 2000 |সঙ্গীত/নৃত্য|
| 153 |তুলসী | 1200 | পড়া |
| 173 | রান| 2000 | সঙ্গীত|
| 43 |কমলা | 10000 | পড়া |
+---+------+------+------------+
[ '{'id':123,'person':'মধু','পুরস্কার':25000,'দক্ষতা':'পেইন্টিং'}' , '{'id':112,'person':'মৌনি','পুরষ্কার':2000,'দক্ষতা':'সংগীত/নৃত্য'}' , '{'id':153,'person':'তুলসী','prize':1200,'skill':'reading'}' , '{'id':173,'person':'Ran','prize':2000,'skill':'music'}' , '{'id':43,'person':'কমলা','পুরস্কার':10000,'দক্ষতা':'পড়া'}' ]
PySpark ডেটাফ্রেমে 5টি সারি রয়েছে। এই 5টি সারি স্ট্রিংগুলির একটি অভিধান হিসাবে ফিরে আসে যা কমা দ্বারা পৃথক করা হয়।
Write.json() ব্যবহার করে JSON-এ PySpark ডেটাফ্রেম
Writ.json() পদ্ধতিটি PySpark-এ উপলব্ধ যা PySpark ডেটাফ্রেমকে JSON ফাইলে লিখে/সেভ করে। এটি একটি প্যারামিটার হিসাবে ফাইলের নাম/পথ নেয়। মূলত, এটি একাধিক ফাইলে (বিভাগ করা ফাইল) JSON প্রদান করে। সবগুলোকে একটি ফাইলে মার্জ করতে আমরা coalesce() পদ্ধতি ব্যবহার করতে পারি।
বাক্য গঠন:
dataframe_object.coalesce( 1 .write.json('file_name')- যুক্ত মোড - dataframe_object.write.mode('append').json('file_name')
- ওভাররাইট মোড - dataframe_object.write.mode('overwrite').json('file_name')
বিদ্যমান JSON যুক্ত/ওভাররাইট করা সম্ভব হতে পারে। write.mode() ব্যবহার করে, আমরা এই ফাংশনে 'অ্যাপেন্ড' পাস করে ডেটা যোগ করতে পারি বা 'ওভাররাইট' পাস করে বিদ্যমান JSON ডেটা ওভাররাইট করতে পারি।
উদাহরণ 1:
3টি সারি এবং 4টি কলাম সহ একটি 'skills_df' PySpark ডেটাফ্রেম তৈরি করুন। JSON-এ এই DataFrame লিখুন।
পাইসপার্ক আমদানি করুনপান্ডা আমদানি করুন
pyspark.sql থেকে SparkSession আমদানি করুন
linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()
# 3টি সারি এবং 4টি কলাম সহ দক্ষতা ডেটা
দক্ষতা =[{ 'আইডি' : 123 , 'ব্যক্তি' : 'মধু' , 'দক্ষতা' : 'পেইন্টিং' , 'পুরস্কার' : 25000 },
{ 'আইডি' : 112 , 'ব্যক্তি' : 'মৌনি' , 'দক্ষতা' : 'নৃত্য' , 'পুরস্কার' : 2000 },
{ 'আইডি' : 153 , 'ব্যক্তি' : 'তুলসী' , 'দক্ষতা' : 'পড়া' , 'পুরস্কার' : 1200 }
]
# উপরের ডেটা থেকে দক্ষতা ডেটাফ্রেম তৈরি করুন
skills_df = linuxhint_spark_app.createDataFrame(দক্ষতা)
# write.json()
দক্ষতা_df.coalesce( 1 .write.json( 'দক্ষতা_ডেটা' )
JSON ফাইল:
আমরা দেখতে পাচ্ছি যে skills_data ফোল্ডারে বিভাজিত JSON ডেটা অন্তর্ভুক্ত রয়েছে।
আসুন JSON ফাইলটি খুলি। আমরা দেখতে পাচ্ছি যে PySpark DataFrame থেকে সমস্ত সারি JSON এ রূপান্তরিত হয়েছে।
PySpark ডেটাফ্রেমে 5টি সারি রয়েছে। এই 5টি সারি স্ট্রিংগুলির একটি অভিধান হিসাবে ফিরে আসে যা কমা দ্বারা পৃথক করা হয়।
উদাহরণ 2:
একটি সারি দিয়ে একটি 'skills2_df' PySpark ডেটাফ্রেম তৈরি করুন। মোডটিকে 'অ্যাপেন্ড' হিসাবে উল্লেখ করে পূর্ববর্তী JSON ফাইলে একটি সারি যুক্ত করুন।
পাইসপার্ক আমদানি করুনপান্ডা আমদানি করুন
pyspark.sql থেকে SparkSession আমদানি করুন
linuxhint_spark_app = SparkSession.builder.appName( 'লিনাক্স ইঙ্গিত' .getOrCreate()
দক্ষতা2 =[{ 'আইডি' : 78 , 'ব্যক্তি' : 'মেরি' , 'দক্ষতা' : 'অশ্বচালনা' , 'পুরস্কার' : 8960 }
]
# উপরের ডেটা থেকে দক্ষতা ডেটাফ্রেম তৈরি করুন
skills2_df = linuxhint_spark_app.createDataFrame(দক্ষতা2)
# write.json() অ্যাপেন্ড মোড সহ।
দক্ষতা2_df.write.mode( 'সংযোজন' .json( 'দক্ষতা_ডেটা' )
JSON ফাইল:
আমরা পার্টিশন করা JSON ফাইল দেখতে পারি। প্রথম ফাইলটি প্রথম ডেটাফ্রেম রেকর্ড ধারণ করে এবং দ্বিতীয় ফাইলটি দ্বিতীয় ডেটাফ্রেম রেকর্ড ধারণ করে।
উপসংহার
PySpark ডেটাফ্রেমকে JSON-এ রূপান্তর করার তিনটি ভিন্ন উপায় রয়েছে। প্রথমে, আমরা to_json() পদ্ধতি নিয়ে আলোচনা করেছি যা বিভিন্ন প্যারামিটার বিবেচনা করে বিভিন্ন উদাহরণ সহ PySpark DataFrame-কে Pandas DataFrame-এ রূপান্তর করে JSON-এ রূপান্তরিত হয়। এর পরে, আমরা toJSON() পদ্ধতিটি ব্যবহার করেছি। অবশেষে, আমরা JSON-এ PySpark DataFrame লিখতে write.json() ফাংশন ব্যবহার করতে শিখেছি। এই ফাংশন দিয়ে যুক্ত করা এবং ওভাররাইট করা সম্ভব।