পাইস্পার্কে, আমি ফাইলগুলি বিশ্লেষণের জন্য একটি অতিরিক্ত দরকারী উপায় পেয়েছি। স্ক্যালায় সম্ভবত একটি সমতুল্য আছে তবে আমি একটি কার্যকরী অনুবাদ নিয়ে যথেষ্ট স্বাচ্ছন্দ্য বোধ করি না। এটি কার্যকরভাবে, লেবেলগুলি সংযোজন সহ একটি টেক্সটফিল কল (নীচের উদাহরণে কী = ফাইল নাম, ফাইল থেকে মান = 1 লাইন)।
"লেবেলযুক্ত" পাঠ্য ফাইল
ইনপুট:
import glob
from pyspark import SparkContext
SparkContext.stop(sc)
sc = SparkContext("local","example") # if running locally
sqlContext = SQLContext(sc)
for filename in glob.glob(Data_File + "/*"):
Spark_Full += sc.textFile(filename).keyBy(lambda x: filename)
আউটপুট: ফাইল-হিসাবে-কী ব্যবহার করে এবং মান = ফাইলের প্রতিটি লাইন সহ একটি টিপলযুক্ত প্রতিটি এন্ট্রি সহ অ্যারে। (প্রযুক্তিগতভাবে, এই পদ্ধতিটি ব্যবহার করে আপনি আসল ফাইলপথের নাম ছাড়াও একটি আলাদা কী ব্যবহার করতে পারেন - মেমরিটিতে সঞ্চয় করার জন্য সম্ভবত একটি হ্যাশিং উপস্থাপনা)। অর্থাত।
[('/home/folder_with_text_files/file1.txt', 'file1_contents_line1'),
('/home/folder_with_text_files/file1.txt', 'file1_contents_line2'),
('/home/folder_with_text_files/file1.txt', 'file1_contents_line3'),
('/home/folder_with_text_files/file2.txt', 'file2_contents_line1'),
...]
আপনি লাইনগুলির তালিকা হিসাবে পুনরায় সংযুক্ত করতে পারেন:
Spark_Full.groupByKey().map(lambda x: (x[0], list(x[1]))).collect()
[('/home/folder_with_text_files/file1.txt', ['file1_contents_line1', 'file1_contents_line2','file1_contents_line3']),
('/home/folder_with_text_files/file2.txt', ['file2_contents_line1'])]
অথবা পুরো ফাইলগুলিকে একক স্ট্রিংগুলিতে ফিরিয়ে আনুন (উদাহরণস্বরূপ ফলাফলটি আপনি পুরো টেক্সটফায়ালস থেকে প্রাপ্ত হিসাবে একই, তবে ফাইলপথিং থেকে সরানো "ফাইল:" স্ট্রিং সহ):
Spark_Full.groupByKey().map(lambda x: (x[0], ' '.join(list(x[1])))).collect()
Path
বিকল্প প্রয়োগ করা হয়।