NDJSON को Parquet में बदलें

यहाँ आप NDJSON को Parquet में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।

  • कहाँ चलता है आपके ब्राउज़र में। फ़ाइल कभी अपलोड नहीं होती।
  • नए सिरे से बना Parquet के काम करने का तरीक़ा NDJSON से अलग है। यह किसी लॉसी कोडेक जैसा धीरे-धीरे होने वाला नुक़सान नहीं है: Parquet जो कुछ व्यक्त कर सकता है, वह हूबहू उतर आता है — और जिसका वहाँ कोई समतुल्य नहीं, वह पूरी तरह रह जाता है।
  • फ़ाइल आकार की सीमा हर फ़ाइल 100 MB तक, मुफ़्त, बिना खाते के।
  • जानने लायक़ एक के अंदर एक बैठी वस्तुएँ चपटी होकर कॉलम बन जाती हैं। गहराई तक बैठा डेटा अपना आकार खो देता है।

एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।

हमेशा बढ़ती फ़ाइल भटकती है, Parquet को एक ही ढाँचा चाहिए

NDJSON की हर लाइन अपने आप में स्वतंत्र है, और यही वजह है कि चीज़ें इसी में जोड़ी जाती हैं — मंगलवार को कोई नया खाना जोड़ा जा सकता है और पुरानी किसी लाइन को दोबारा लिखना नहीं पड़ता। महीनों के बाद एक ही फ़ाइल में रिकॉर्ड की कई पीढ़ियाँ जमा हो जाती हैं।

Parquet इसे बर्दाश्त नहीं करता। उसका फ़ूटर एक तय कॉलम-सूची और हर एक का एक टाइप घोषित करता है, और हर पंक्ति उसका पालन करती है। इसलिए बदलाव को सारी पीढ़ियों को एक ढाँचे में समेटना पड़ता है, और आगे की हर बात इसी का नतीजा है।

कॉलम-सूची पूरी फ़ाइल का जोड़ है, कोई नमूना नहीं

कोई खाना जो तीन लाख लाइनों बाद पहली बार दिखता है, वह भी कॉलम बनता है, और उससे पहले की पंक्तियों में ख़ाली जगह भर जाती है। यही एकमात्र तरीक़ा है जिसमें कुछ खोता नहीं, और इसीलिए लिखने से पहले पूरी फ़ाइल एक बार पढ़ी जाती है।

ज़्यादातर औज़ार नमूना लेते हैं — पहली हज़ार लाइनें — और यही वजह है कि जो टेस्ट फ़ाइल पर चला, वह असली इस्तेमाल में टूट जाता है। नमूने से तय ढाँचा जो खाना नहीं देखा, उसे चुपचाप गिरा देता है; पूरा पढ़ना यह ख़तरा हटा देता है।

टाइप बदल जाए तो पूरा कॉलम टेक्स्ट बन जाता है

भटकाव का दूसरा रूप वह खाना है जिसका नाम वही रहा और टाइप बदल गया — कोई पहचान संख्या जो पहले अंक थी और अब उद्धरण में है, कोई स्थिति जो बूलियन थी और अब स्ट्रिंग बन गई।

हर कॉलम का टाइप उसके सभी मानों को देखकर तय होता है: सारे बूलियन होने पर BOOLEAN, 32-बिट के भीतर सारे पूर्णांक होने पर INT32, बाक़ी संख्याओं पर DOUBLE, और मिश्रित होने पर स्ट्रिंग कॉलम। स्ट्रिंग कॉलम दिखता है और कभी चुपचाप कोई पंक्ति नहीं गिराता।

घोंसले वाले खाने बिंदु-नाम वाले कॉलम बनते हैं

structured इवेंट में अक्सर घोंसले होते हैं — कोई request खंड, कोई user खंड — और Parquet में किसी सेल के अंदर वस्तु रखने की जगह नहीं है। इसलिए हर रिकॉर्ड पहले अपने पत्तों तक खोला जाता है, और पथ ही कॉलम का नाम बन जाता है — request.method, user.id।

सूचियाँ स्थिति के हिसाब से खुलती हैं, इसलिए tags नाम की सूची tags.0, tags.1 बन जाती है, और कॉलम-सूची पूरी फ़ाइल का जोड़ है — कहीं एक बहुत लंबी सूची पूरे महीने के ढाँचे को चौड़ा कर सकती है।

बड़ी पूर्णांक संख्याएँ DOUBLE बनती हैं, INT64 नहीं

Parquet के पास 64-बिट पूर्णांक टाइप है और यह बदलाव उसे कभी नहीं लिखता। मान JavaScript की संख्याओं से गुज़रते हैं, जो 53 बिट तक ही पूर्णांक सँभालती हैं, इसलिए 32-बिट के बाहर की हर संख्या DOUBLE बनकर लिखी जाती है।

इवेंट फ़ाइलों में इससे प्रभावित होने वाले मान भरे रहते हैं — मिलीसेकंड टाइमस्टैंप, बड़ी पहचान संख्याएँ। टाइमस्टैंप के लिए DOUBLE काफ़ी है; पहचान संख्या के लिए नहीं, और उसका इलाज उस जगह है जहाँ इवेंट लिखे जाते हैं — उन्हें JSON स्ट्रिंग के रूप में भेजना सटीकता बचाए रखता है।

पचास हज़ार रिकॉर्ड पर आकार का फ़र्क़

छह खानों वाले पचास हज़ार बनाए गए ऑर्डर रिकॉर्ड NDJSON में 4.8 मेगाबाइट और Parquet में 207 किलोबाइट निकले — इस डेटा पर बीस गुना से भी बेहतर।

दो चीज़ें साथ काम कर रही हैं। NDJSON की हर लाइन हर खाने का नाम दोहराती है; कॉलम-भंडार में हर नाम फ़ूटर में एक बार लिखा जाता है। और एक तरह के मानों का साथ बैठना अलग-अलग लाइनों में बिखरे मानों से कहीं ज़्यादा दबता है।

यह बदलाव धारा में नहीं बहता, वजह ढाँचा है

यहाँ एक हल्की विडंबना है। NDJSON इसलिए बना ताकि पढ़ने वाले को पूरी फ़ाइल कभी न थामनी पड़े, और यह बदलाव पूरी फ़ाइल थाम लेता है — क्योंकि आख़िरी लाइन कोई नया कॉलम जोड़ सकती है, और फ़ूटर तब तक नहीं लिखा जा सकता जब तक यह पता न हो।

सीमा योजना की नहीं, याददाश्त की है। मुफ़्त दर्जा 100 मेगाबाइट तक लेता है; कुछ दर्जन मेगाबाइट बिना दिक़्क़त के बदल जाते हैं। इससे बड़ी फ़ाइल हो तो split -l जैसी कमान से बाँटकर हर हिस्सा अलग बदलिए — Parquet फ़ाइलों का फ़ोल्डर एक टेबल की तरह पढ़ा जा सकता है।

इवेंट बदलते समय आपकी मशीन पर ही रहते हैं

Parquet लिखने वाला और JSON पढ़ने वाला दोनों साधारण JavaScript हैं, जो यह पेज ज़रूरत पड़ने पर ही उतारता है — कोई सर्वर क़दम बीच में नहीं। कोई अनुरोध फ़ाइल कहीं नहीं ले जाता; कोई खाता नहीं, कोई क़तार नहीं।

टेलीमेट्री के लिए यही अक्सर तय करने वाली बात होती है। इवेंट धाराओं में उपयोगकर्ता की पहचान, IP पता और जो कुछ भी ऐप्लिकेशन दर्ज करना चाहे, रहता है — और यह किसी अनजान वेब परिवर्तक के लिए ठहरने की वजह नहीं बनता।

NDJSON को Parquet में ऐसे बदलें

  1. अपनी NDJSON फ़ाइल इस पेज पर छोड़ें, या चुनने के लिए दबाएँ।
  2. लक्ष्य के रूप में Parquet चुनें। कन्वर्ज़न आपके ब्राउज़र में होता है और फ़ाइल अपलोड नहीं होती।
  3. तैयार Parquet फ़ाइल डाउनलोड कर लें।

NDJSON या Parquet: क्या बदलता है

NDJSON और Parquet की तुलना
NDJSONParquet
पूरा नामNewline-Delimited JSONApache Parquet
फ़ाइल एक्सटेंशन.ndjson, .jsonl.parquet
मीडिया टाइपapplication/x-ndjsonapplication/vnd.apache.parquet
कंप्रेशनबिना नुक़सान — कुछ छोड़ा नहीं जाता
पहली बार प्रकाशित20132013
प्रकाशकApache Software Foundation
लाइसेंसखुला मानकखुला मानक
आज की स्थितिमौजूदामौजूदा
ब्राउज़र में खुलता हैकोई ब्राउज़र नहींकोई ब्राउज़र नहीं
इसकी जगह विचारणीयJSON, CSVCSV, JSON

नतीजा खोलना

pandas NDJSON और Parquet — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।

कौन-सा फ़ॉर्मेट किस काम के लिए है

Parquet Apache Software Foundation का है और 2013 से चला आ रहा है। pandas, Apache Spark और DuckDB इस फ़ॉर्मेट को पढ़ लेते है।

NDJSON से Parquet: आम सवाल

क्या मेरी NDJSON फ़ाइल कहीं अपलोड होती है?

नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे parquet-wasm है, Apache Arrow के पाठक का एक WebAssembly संस्करण; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।

क्या NDJSON को Parquet में बदलना मुफ़्त है?

हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। parquet-wasm आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।

NDJSON को Parquet में बदलने पर क्या गुणवत्ता जाती है?

NDJSON और Parquet सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। एक के अंदर एक बैठी वस्तुएँ चपटी होकर कॉलम बन जाती हैं। गहराई तक बैठा डेटा अपना आकार खो देता है।

Parquet फ़ाइल खोलने के लिए क्या मुझे कुछ इंस्टॉल करना होगा?

कन्वर्ज़न के लिए नहीं: वह उसी ब्राउज़र में होता है जो आपने पहले से खोल रखा है। नतीजा खोलने के लिए उसके बाद वही प्रोग्राम चाहिए जिससे आपका डिवाइस Apache Parquet आम तौर पर दिखाता है।

इन फ़ॉर्मेट के बारे में और