पाठ 10 / 25
File Formats: CSV, JSON, Parquet
आम formats पढ़ें और लिखें, और analytics के लिए columnar formats चुनें।
Row formats बनाम columnar
CSV और JSON पंक्ति-उन्मुख text formats हैं: बनाना और देखना आसान, पर बड़े और धीमे, और CSV में types नहीं होते। Parquet और ORC columnar, संपीड़ित binary formats हैं जो schema रखते हैं, Spark को सिर्फ़ ज़रूरी columns पढ़ने देते हैं (column pruning) और statistics से हिस्से छोड़ने देते हैं (predicate pushdown)। Analytics के लिए कच्चे CSV/JSON को जल्दी Parquet में बदलें। CSV या JSON पढ़ते समय inferSchema की जगह Spark को स्पष्ट schema दें, जो डेटा को एक बार अतिरिक्त स्कैन करता है और types ग़लत अनुमान लगा सकता है। Write modes: overwrite, append, ignore, errorifexists (डिफ़ॉल्ट)।
स्पष्ट schema के साथ CSV पढ़ना (उदाहरण)
DDL string schema देने का सबसे छोटा तरीक़ा है। PERMISSIVE mode ख़राब rows को nulls के साथ रखता है; FAILFAST पहली ख़राब row पर रुक जाता है।
schema = "order_id LONG, customer STRING, city STRING, amount DOUBLE, order_date DATE"
df = (spark.read.format("csv")
.option("header", True)
.option("mode", "FAILFAST")
.schema(schema)
.load("s3a://lake/raw/orders/2026-10-01/*.csv"))
df.write.mode("overwrite").parquet("s3a://lake/clean/orders/")एक विशाल CSV से बचें
एक विशाल gzip-संपीड़ित CSV को बाँटा नहीं जा सकता, इसलिए एक ही task उसे पूरा पढ़ता है। डेटा को कई मध्यम आकार की Parquet files (लगभग 128 MB से 1 GB प्रत्येक) के रूप में रखें।
त्वरित जाँच: Analytics के लिए Parquet आम तौर पर CSV से बेहतर क्यों है?
- यह columnar, संपीड़ित है और schema रखता है, इसलिए Spark कम डेटा पढ़ता है
- इसे text editor में खोला जा सकता है
- इसमें types नहीं होते
- इसे पढ़ना धीमा है
Answer
यह columnar, संपीड़ित है और schema रखता है, इसलिए Spark कम डेटा पढ़ता है — Columnar ढाँचा column pruning और predicate pushdown की अनुमति देता है।