आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप Parquet को TSV में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
Parquet से TSV
यह एक बाइनरी कंटेनर है। इस पर head चलाने से चार अक्षर PAR1 और उसके बाद स्क्रीन भर शोर मिलता है, grep कुछ भरोसेमंद नहीं पाता क्योंकि मूल्य संपीड़ित और डिक्शनरी-एनकोडेड होते हैं।
यही इस बदलाव की वजह है: किसी सर्वर पर पड़ा Parquet निर्यात, बिना एडमिन अधिकार का लैपटॉप, कुछ भी इंस्टॉल न हुआ कंटेनर, या किसी सवाल के साथ भेजी गई फ़ाइल जिसका जवाब दो मिनट में चाहिए। पंक्तियाँ बनाना उसके बारे में कुछ भी जानने का सबसे तेज़ रास्ता है।
डेटा निर्यात में मूल्य कॉमा से भरे होते हैं — पते, उत्पाद के नाम, मुक्त पाठ। कॉमा-अलग की गई फ़ाइल में इन सबको उद्धरण चिह्नों में लपेटना पड़ता है, और हर उपभोक्ता को उद्धरण, एस्केप और एम्बेडेड न्यूलाइन सही ढंग से सँभालना होता है।
डेटा में टैब लगभग ग़ायब होते हैं, इसलिए डिलिमिटर और सामग्री एक-दूसरे से होड़ नहीं करते। इस बदलाव के बाद cut -f3 तीसरा कॉलम ढूँढ लेता है, sort सही से क्रमबद्ध करता है। किसी को पार्स नहीं करना पड़ता; बस बाँटना पड़ता है।
किसी मूल्य के भीतर टैब अपवाद है। ऐसा होने पर कन्वर्टर उस फ़ील्ड को दोहरे उद्धरण में लपेट देता है, क्योंकि वरना पंक्ति चुपचाप एक कॉलम बढ़ा लेती।
वह आउटपुट सही है और असली पार्सर उसे सँभाल लेता है। cut -f नहीं करता: यह टैब गिनता है और उद्धरण चिह्न को कभी नहीं जाना। अगर कोई पाइपलाइन कुछ पंक्तियों पर बेमेल नतीजे दे रही है, तो grep -c '"' output.tsv यह एक सेकंड में बता देगा।
किसी टाइमस्टैम्प कॉलम को ISO 8601 स्ट्रिंग के तौर पर लिखा जाता है — 2024-03-11T09:30:00.000Z — जो बिना किसी डेट टाइप वाले प्रारूप में सबसे समझदार जवाब है। इसका एक गुण शेल में बहुत मायने रखता है: यह साधारण लेक्सिकल सॉर्ट में कालक्रम से क्रमबद्ध हो जाता है।
sort -k4 किसी तारीख़ कॉलम पर वही करता है जो आपने चाहा, और uniq -c पहले दस अक्षरों पर हर दिन की पंक्तियाँ गिन देता है। किसी भी लोकल-फ़ॉर्मैट की गई तारीख़ या एपॉक नंबर पर यह काम नहीं करता।
Parquet सूची, structs और maps को मूल रूप से रखता है। पाठ की पंक्ति में यह नहीं होता, इसलिए नेस्टेड कॉलम को उसके फ़ील्ड के भीतर JSON के तौर पर लिखा जाता है: कोई सूची ["a","b"] बनकर आती है।
cut -f5 output.tsv | jq ".[0]" हर सूची का पहला तत्व निकाल लेता है, और नेस्टिंग यात्रा में बचती है, कॉलम में चपटी नहीं होती। कोई टेक्स्ट संकेत न रखने वाले बाइनरी कॉलम लोअरकेस हेक्साडेसिमल के तौर पर लिखे जाते हैं।
null को ख़ाली फ़ील्ड लिखा जाता है। हर पंक्ति में टैब की गिनती एक जैसी रहती है, तो फ़ाइल आयताकार बनी रहती है और स्थितीय औज़ार सही रहते हैं।
यह एक फ़र्क़ मिटा भी देता है। Parquet हर कॉलम की null-योग्यता दर्ज करता है और null को ख़ाली स्ट्रिंग से अलग मानता है; आउटपुट में दोनों दो टैब के बीच शून्य अक्षर हैं। गिनती के लिए स्रोत से किसी क्वेरी इंजन से पूछें।
Parquet फ़ाइल जो कुछ अपने कॉलम के बारे में जानती थी — हर एक का टाइप, पंक्ति गिनती, प्रति-कॉलम सांख्यिकी — फ़ूटर में रहता है, और उसमें से कुछ भी TSV में नहीं पहुँचता।
अगर स्कीमा पढ़ने का कोई तरीक़ा है, तो बदलने से पहले पढ़ लीजिए और लिख लीजिए। DuckDB में एक ही वाक्य में DESCRIBE उसे छाप देता है। कुछ न होने पर, हर कॉलम के कुछ अलग मूल्य cut -f2 | sort -u | head से जाँचना बेहतर है बजाय अंकों के कॉलम को मात्रा मानने के।
Parquet संपीड़ित और डिक्शनरी-एनकोडेड होती है, तो जितना पाठ यह विस्तृत करती है वह फ़ाइल के आकार से कई गुना ज़्यादा हो सकता है। दोहराए गए स्टेटस कोड का कॉलम स्रोत में लगभग कुछ नहीं लेता और आउटपुट में हर पंक्ति के लिए पूरी नक़ल लेता है।
बदलाव से पहले इसका अंदाज़ा लगाना समझदारी है, क्योंकि विस्तृत तालिका बदलाव के दौरान मेमोरी में रखी जाती है। सौ मेगाबाइट का निर्यात उससे कहीं ज़्यादा पाठ बना सकता है।
Parquet रीडर इस पन्ने पर माँगे जाने पर लोड होने वाली लाइब्रेरी है और लिखना सादा जावास्क्रिप्ट है। किसी अनुरोध में फ़ाइल नहीं जाती, तो किसी डेटा प्लेटफ़ॉर्म के बीच से लिया गया निर्यात — अक्सर बिना समुच्चित और बिना छिपाया वर्ज़न — किसी और के सर्वर पर प्रति नहीं बनता।
कोई क़तार नहीं, कोई खाता नहीं, और सीमा 100 MB प्रति फ़ाइल है। इतनी बड़ी फ़ाइल के लिए जवाब बड़ा कन्वर्टर नहीं, क्वेरी इंजन है — यह बेहतर जवाब भी है क्योंकि यह सिर्फ़ ज़रूरी कॉलम लेने देता है।
अगर कुछ भी इंस्टॉल कर सकते हैं तो DuckDB इंस्टॉल कीजिए। यह बिना किसी इम्पोर्ट क़दम के Parquet फ़ाइल को जहाँ है वहीं पढ़ता है, एक वाक्य में स्कीमा छापता है, और WHERE क्लॉज़ से असली सवाल का जवाब देता है।
यह बदलाव तब है जब वह विकल्प नहीं है: बंद की गई मशीन, सहकर्मी का लैपटॉप, ईमेल से आई फ़ाइल, पाँच मिनट का सवाल जो सेटअप की माँग नहीं करता। यह तब भी सही चुनाव है जब मंज़िल सचमुच टेक्स्ट पाइपलाइन है।
| Parquet | TSV | |
|---|---|---|
| पूरा नाम | Apache Parquet | Tab-Separated Values |
| फ़ाइल एक्सटेंशन | .parquet | .tsv, .tab |
| मीडिया टाइप | application/vnd.apache.parquet | text/tab-separated-values |
| कंप्रेशन | बिना नुक़सान — कुछ छोड़ा नहीं जाता | — |
| पहली बार प्रकाशित | 2013 | 1993 |
| प्रकाशक | Apache Software Foundation | — |
| विनिर्देश | — | IANA text/tab-separated-values |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | CSV, JSON | CSV, JSON |
कुछ नहीं खोता। Parquet और TSV — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
TSV काम करने का फ़ॉर्मेट है और Parquet बनकर तैयार फ़ॉर्मेट। जो लौटता है वह पन्ने की तस्वीर नहीं बल्कि बदली जा सकने वाली लिखावट है — आम तौर पर यही इस कन्वर्ज़न की वजह होती है, और यही इसकी सीमा भी।
pandas Parquet और TSV — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
TSV 1993 से चला आ रहा है, और IANA text/tab-separated-values में तय किया गया है। Microsoft Excel, LibreOffice Calc और pandas इस फ़ॉर्मेट को पढ़ लेते है।
TSV 1993 में आया और Parquet 2013 में। किसी को सौंपने के लिए आम तौर पर पुराना वाला ज़्यादा सुरक्षित रहता है; नया वाला वही काम कम बाइट में कर देता है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे parquet-wasm है, Apache Arrow के पाठक का एक WebAssembly संस्करण; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। parquet-wasm आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
नहीं। TSV वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
कुछ नहीं खोता। Parquet और TSV — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
TSV काम करने का फ़ॉर्मेट है और Parquet बनकर तैयार फ़ॉर्मेट। जो लौटता है वह पन्ने की तस्वीर नहीं बल्कि बदली जा सकने वाली लिखावट है — आम तौर पर यही इस कन्वर्ज़न की वजह होती है, और यही इसकी सीमा भी।