आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप TSV को Parquet में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
TSV से Parquet
बहुत-सा वैज्ञानिक और विश्लेषणात्मक आउटपुट परंपरा से टैब-सेपरेटेड होता है — एक्सप्रेशन मैट्रिक्स, वैरिएंट टेबल, इंस्ट्रूमेंट लॉग। टैब इसलिए चुना गया क्योंकि विवरण वाले कॉलम कॉमा और सेमीकोलन से भरे होते हैं।
बार-बार क्वेरी करने के लिए यह बुरा फ़ॉर्मैट है — हर पढ़ाई हर बाइट पार्स करती है। एक बार टाइप वाली कॉलमर फ़ाइल में बदलना यह काम आगे ले आता है।
Parquet कॉलम हर वैल्यू के लिए एक ही टाइप रखता है। यहाँ लिखने वाला पूरा कॉलम देखने के बाद फ़ैसला करता है — अगर हर ख़ाली-न-हो वैल्यू पूर्णांक हो तो INT32, सब संख्या हो तो DOUBLE, और एक भी वैल्यू इनमें से न हो तो पूरा कॉलम स्ट्रिंग।
विश्लेषण टेबल में ऐसे मान भरे होते हैं। NA R परंपरा है; अकेला बिंदु VCF और GTF में ग़ायब फ़ील्ड के लिए है। इनमें से कोई भी एक पंक्ति में हो, तो दस लाख संख्याओं वाला कॉलम स्ट्रिंग बन जाता है।
आकर्षक विकल्प पहली पंक्ति या पहले हज़ार से टाइप तय करना और बाक़ी को null लिख देना है। ज़्यादातर औज़ार यही करते हैं — यह मान्य फ़ाइल बनाता है और चुपचाप हर उस पंक्ति को मिटा देता है जहाँ मार्कर था।
स्ट्रिंग कॉलम ज़ोर से बोलता है — स्कीमा देखते ही दिखता है, एक एक्सप्रेशन में बदला जा सकता है। अंदाज़ा लगाने से इनकार करना एक कास्ट माँगता है और बदले में एक ऐसी ग़लती से बचाता है जो बाद में मिलनी बहुत मुश्किल है।
एक कमांड काफ़ी है — cut -f7 table.tsv | sort -u | head -50 सातवें कॉलम के अलग-अलग मान दिखाता है, और मार्कर उनमें दिख जाएगा।
उपाय कन्वर्टर में नहीं, स्रोत में है — मार्कर को असली ख़ाली फ़ील्ड से बदलिए। Null टाइप-अनुमान में शामिल नहीं होते, तो असली गैप वाला संख्या-कॉलम अब संख्या-कॉलम ही रहता है।
चौड़ी टेबल में कॉलमर लेआउट का सबसे ज़्यादा फ़ायदा मिलता है। हर सैंपल के लिए एक कॉलम वाली एक्सप्रेशन मैट्रिक्स एक-के-बाद-एक कॉलम में स्टोर होती है, तो चार कॉलम माँगने वाली क्वेरी सिर्फ़ उतना ही पढ़ती है।
TSV पर वही क्वेरी हर पंक्ति का हर बाइट पढ़ती है, क्योंकि सत्रहवाँ फ़ील्ड ढूँढ़ने का इकलौता तरीक़ा सत्रह टैब गिनना है।
लिखने वाला INT32 सिर्फ़ तब देता है जब कॉलम की हर वैल्यू 32-बिट सीमा में फ़िट हो। इससे आगे कॉलम INT64 नहीं, DOUBLE बनता है — यह उन्हें चौंकाता है जो जानते हैं Parquet के पास 64-बिट पूर्णांक टाइप है।
वजह ईमानदारी है — मान JavaScript संख्याओं से गुज़रते हैं, जो 53 बिट पूर्णांक सटीकता रखती हैं। बड़े पहचानकर्ता वाले कॉलम को टेक्स्ट के तौर पर स्रोत में रखिए तो वह स्ट्रिंग कॉलम बनकर बरक़रार आएगा।
फ़ाइल फ़ुटर कॉलम के नाम, हर एक का टाइप और पंक्ति गिनती रखता है, और डेटा हज़ार से एक लाख पंक्तियों के रो-ग्रुप में लिखा जाता है, हर कॉलम पर प्रति-कॉलम सांख्यिकी के साथ। हर कॉलम Snappy से अलग संपीड़ित होता है।
दोहराई गई वैल्यू वाला कॉलम — क्रोमोसोम, नमूना पहचानकर्ता — डिक्शनरी की तरह लगभग कुछ नहीं ख़र्च करता। लगातार माप वाला कॉलम नहीं, और वही फ़ाइल के साइज़ पर हावी रहता है।
DuckDB फ़ाइल को वहीं पढ़ लेता है — पथ नाम देना काफ़ी है, कोई इम्पोर्ट क़दम नहीं। DESCRIBE SELECT * FROM "table.parquet" अनुमानित स्कीमा दिखाता है, और स्ट्रिंग बन गया कॉलम ढूँढ़ने का सबसे तेज़ तरीक़ा यही है।
pandas इसे एक कॉल में पढ़ता है, Spark इसे देशी टेबल फ़ॉर्मैट मानता है। हैरानी के बाद सही क़दम है ग़लत वैल्यू क्वेरी करना, अंधाधुंध cast करना नहीं।
दोनों हिस्से इसी पेज पर होते हैं — TSV पार्सर सादा JavaScript है और Parquet लिखने वाला औज़ार माँग पर लोड होता है। कुछ अपलोड नहीं होता, तो अप्रकाशित नतीजे या भरोसे में रखा डेटा कहीं नहीं जाता।
पूरी टेबल मेमोरी में रहती है जब तक वह कॉलम में बदल न जाए, तो दसियों मेगाबाइट आराम से बदलती हैं और कई सौ पर ब्राउज़र टैब पर दबाव पड़ने लगता है। कई-गीगाबाइट मैट्रिक्स के लिए DuckDB बेहतर औज़ार है।
| TSV | Parquet | |
|---|---|---|
| पूरा नाम | Tab-Separated Values | Apache Parquet |
| फ़ाइल एक्सटेंशन | .tsv, .tab | .parquet |
| मीडिया टाइप | text/tab-separated-values | application/vnd.apache.parquet |
| कंप्रेशन | — | बिना नुक़सान — कुछ छोड़ा नहीं जाता |
| पहली बार प्रकाशित | 1993 | 2013 |
| प्रकाशक | — | Apache Software Foundation |
| विनिर्देश | IANA text/tab-separated-values | — |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | CSV, JSON | CSV, JSON |
कुछ नहीं खोता। TSV और Parquet — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।
pandas TSV और Parquet — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
TSV 1993 में आया। यह IANA text/tab-separated-values में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
Parquet Apache Software Foundation का है और 2013 से चला आ रहा है। pandas, Apache Spark और DuckDB इस फ़ॉर्मेट को पढ़ लेते है।
TSV 1993 में आया और Parquet 2013 में। किसी को सौंपने के लिए आम तौर पर पुराना वाला ज़्यादा सुरक्षित रहता है; नया वाला वही काम कम बाइट में कर देता है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे parquet-wasm है, Apache Arrow के पाठक का एक WebAssembly संस्करण; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। parquet-wasm आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
नहीं। Parquet वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
कुछ नहीं खोता। TSV और Parquet — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।