এই উত্তরটি স্বীকৃত উত্তরে প্রসারিত হয়, আরও প্রসঙ্গ দেয় এবং কোড স্নিপেটগুলি সরবরাহ করে যা আপনি আপনার মেশিনের স্পার্ক শেলটিতে চালাতে পারেন।
গৃহীত উত্তরের উপর আরও প্রসঙ্গ
গৃহীত উত্তর আপনাকে ইমপ্রেশনটি দিতে পারে নমুনা কোডটি একটি একক mydata.csv
ফাইলকে আউটপুট দেয় এবং এটি কেস নয়। আসুন দেখান:
val df = Seq("one", "two", "three").toDF("num")
df
.repartition(1)
.write.csv(sys.env("HOME")+ "/Documents/tmp/mydata.csv")
কি ফলাফল আউট:
Documents/
tmp/
mydata.csv/
_SUCCESS
part-00000-b3700504-e58b-4552-880b-e7b52c60157e-c000.csv
এনবি mydata.csv
গৃহীত উত্তরের একটি ফোল্ডার - এটি কোনও ফাইল নয়!
একটি নির্দিষ্ট নাম সহ একটি একক ফাইল আউটপুট কিভাবে
আমরা একটি একক ফাইল লিখতে স্পার্ক-দারিয়া ব্যবহার করতে পারি mydata.csv
।
import com.github.mrpowers.spark.daria.sql.DariaWriters
DariaWriters.writeSingleFile(
df = df,
format = "csv",
sc = spark.sparkContext,
tmpFolder = sys.env("HOME") + "/Documents/better/staging",
filename = sys.env("HOME") + "/Documents/better/mydata.csv"
)
এটি নিম্নলিখিত হিসাবে ফাইল আউটপুট আসবে:
Documents/
better/
mydata.csv
এস 3 পাথ
DariaWriters.writeSingleFile
এস 3 এ এই পদ্ধতিটি ব্যবহার করতে আপনাকে s3a পাথগুলি পাস করতে হবে :
DariaWriters.writeSingleFile(
df = df,
format = "csv",
sc = spark.sparkContext,
tmpFolder = "s3a://bucket/data/src",
filename = "s3a://bucket/data/dest/my_cool_file.csv"
)
আরও তথ্যের জন্য এখানে দেখুন ।
কপিমার্জ এড়ানো
copyMerge Hadoop এর 3. থেকে অপসারণ করা হয়েছে DariaWriters.writeSingleFile
বাস্তবায়ন ব্যবহারসমূহ fs.rename
, যেমন এখানে বর্ণিত । স্পার্ক 3 এখনও হ্যাডোপ 2 ব্যবহৃত হয়েছে , সুতরাং কপিরমর্জ বাস্তবায়নগুলি 2020 সালে কার্যকর হবে I'm স্পার্ক হ্যাডোপ 3 এ কখন আপগ্রেড হবে তা আমি নিশ্চিত নই, তবে স্পার্ক আপগ্রেড হ্যাডোপ আপগ্রেড করার সময় আপনার কোডটি ভেঙে ফেলবে এমন কোনও কপিমার্জ পদ্ধতির এড়ানো ভাল।
সোর্স কোড
দেখুন DariaWriters
স্ফুলিঙ্গ-Daria সোর্স কোডে অবজেক্ট আপনি বাস্তবায়ন পরিদর্শন করতে চাই।
পাইস্পার্ক বাস্তবায়ন
পাইস্পার্কের সাথে একটি একক ফাইল লিখতে আরও সহজ কারণ আপনি ডেটাফ্রেমকে একটি পান্ডাস ডেটা ফ্রেমে রূপান্তর করতে পারেন যা ডিফল্টরূপে একক ফাইল হিসাবে লিখিত হয়।
from pathlib import Path
home = str(Path.home())
data = [
("jellyfish", "JALYF"),
("li", "L"),
("luisa", "LAS"),
(None, None)
]
df = spark.createDataFrame(data, ["word", "expected"])
df.toPandas().to_csv(home + "/Documents/tmp/mydata-from-pyspark.csv", sep=',', header=True, index=False)
সীমাবদ্ধতা
DariaWriters.writeSingleFile
Scala পদ্ধতি এবং df.toPandas()
পাইথন ছোট ডেটাসেট কেবল কাজ কাছে। বিশাল ডেটাসেট একক ফাইল হিসাবে লেখা যায় না। একক ফাইল হিসাবে ডেটা লেখাই পারফরম্যান্সের দৃষ্টিভঙ্গি থেকে অনুকূল নয় কারণ সমান্তরালে ডেটা লেখা যায় না।