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

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

  • कहाँ चलता है आपके ब्राउज़र में। फ़ाइल कभी अपलोड नहीं होती।
  • बिना नुक़सान कुछ नहीं छोड़ा जाता। TSV में जो था, Parquet में ठीक वही रहता है।
  • फ़ाइल आकार की सीमा हर फ़ाइल 100 MB तक, मुफ़्त, बिना खाते के।

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

विश्लेषण औज़ार जो टैब-सेपरेटेड टेबल बनाते हैं

बहुत-सा वैज्ञानिक और विश्लेषणात्मक आउटपुट परंपरा से टैब-सेपरेटेड होता है — एक्सप्रेशन मैट्रिक्स, वैरिएंट टेबल, इंस्ट्रूमेंट लॉग। टैब इसलिए चुना गया क्योंकि विवरण वाले कॉलम कॉमा और सेमीकोलन से भरे होते हैं।

बार-बार क्वेरी करने के लिए यह बुरा फ़ॉर्मैट है — हर पढ़ाई हर बाइट पार्स करती है। एक बार टाइप वाली कॉलमर फ़ाइल में बदलना यह काम आगे ले आता है।

NA, अकेला बिंदु और डैश — जो कॉलम का टाइप बदल देते हैं

Parquet कॉलम हर वैल्यू के लिए एक ही टाइप रखता है। यहाँ लिखने वाला पूरा कॉलम देखने के बाद फ़ैसला करता है — अगर हर ख़ाली-न-हो वैल्यू पूर्णांक हो तो INT32, सब संख्या हो तो DOUBLE, और एक भी वैल्यू इनमें से न हो तो पूरा कॉलम स्ट्रिंग।

विश्लेषण टेबल में ऐसे मान भरे होते हैं। NA R परंपरा है; अकेला बिंदु VCF और GTF में ग़ायब फ़ील्ड के लिए है। इनमें से कोई भी एक पंक्ति में हो, तो दस लाख संख्याओं वाला कॉलम स्ट्रिंग बन जाता है।

लिखने वाला वैल्यू क्यों नहीं गिरा देता

आकर्षक विकल्प पहली पंक्ति या पहले हज़ार से टाइप तय करना और बाक़ी को null लिख देना है। ज़्यादातर औज़ार यही करते हैं — यह मान्य फ़ाइल बनाता है और चुपचाप हर उस पंक्ति को मिटा देता है जहाँ मार्कर था।

स्ट्रिंग कॉलम ज़ोर से बोलता है — स्कीमा देखते ही दिखता है, एक एक्सप्रेशन में बदला जा सकता है। अंदाज़ा लगाने से इनकार करना एक कास्ट माँगता है और बदले में एक ऐसी ग़लती से बचाता है जो बाद में मिलनी बहुत मुश्किल है।

बदलने से पहले सेंटिनल ढूँढ़िए

एक कमांड काफ़ी है — cut -f7 table.tsv | sort -u | head -50 सातवें कॉलम के अलग-अलग मान दिखाता है, और मार्कर उनमें दिख जाएगा।

उपाय कन्वर्टर में नहीं, स्रोत में है — मार्कर को असली ख़ाली फ़ील्ड से बदलिए। Null टाइप-अनुमान में शामिल नहीं होते, तो असली गैप वाला संख्या-कॉलम अब संख्या-कॉलम ही रहता है।

दो हज़ार कॉलम चौड़ी टेबल

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

TSV पर वही क्वेरी हर पंक्ति का हर बाइट पढ़ती है, क्योंकि सत्रहवाँ फ़ील्ड ढूँढ़ने का इकलौता तरीक़ा सत्रह टैब गिनना है।

सटीकता, और पूर्णांक कभी-कभी DOUBLE क्यों बनते हैं

लिखने वाला INT32 सिर्फ़ तब देता है जब कॉलम की हर वैल्यू 32-बिट सीमा में फ़िट हो। इससे आगे कॉलम INT64 नहीं, DOUBLE बनता है — यह उन्हें चौंकाता है जो जानते हैं Parquet के पास 64-बिट पूर्णांक टाइप है।

वजह ईमानदारी है — मान JavaScript संख्याओं से गुज़रते हैं, जो 53 बिट पूर्णांक सटीकता रखती हैं। बड़े पहचानकर्ता वाले कॉलम को टेक्स्ट के तौर पर स्रोत में रखिए तो वह स्ट्रिंग कॉलम बनकर बरक़रार आएगा।

आपकी टेबल के बारे में क्या रिकॉर्ड होता है

फ़ाइल फ़ुटर कॉलम के नाम, हर एक का टाइप और पंक्ति गिनती रखता है, और डेटा हज़ार से एक लाख पंक्तियों के रो-ग्रुप में लिखा जाता है, हर कॉलम पर प्रति-कॉलम सांख्यिकी के साथ। हर कॉलम Snappy से अलग संपीड़ित होता है।

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

DuckDB में नतीजा बिना लोड किए क्वेरी करना

DuckDB फ़ाइल को वहीं पढ़ लेता है — पथ नाम देना काफ़ी है, कोई इम्पोर्ट क़दम नहीं। DESCRIBE SELECT * FROM "table.parquet" अनुमानित स्कीमा दिखाता है, और स्ट्रिंग बन गया कॉलम ढूँढ़ने का सबसे तेज़ तरीक़ा यही है।

pandas इसे एक कॉल में पढ़ता है, Spark इसे देशी टेबल फ़ॉर्मैट मानता है। हैरानी के बाद सही क़दम है ग़लत वैल्यू क्वेरी करना, अंधाधुंध cast करना नहीं।

बदलाव कहाँ होता है और कितनी बड़ी टेबल संभलती है

दोनों हिस्से इसी पेज पर होते हैं — TSV पार्सर सादा JavaScript है और Parquet लिखने वाला औज़ार माँग पर लोड होता है। कुछ अपलोड नहीं होता, तो अप्रकाशित नतीजे या भरोसे में रखा डेटा कहीं नहीं जाता।

पूरी टेबल मेमोरी में रहती है जब तक वह कॉलम में बदल न जाए, तो दसियों मेगाबाइट आराम से बदलती हैं और कई सौ पर ब्राउज़र टैब पर दबाव पड़ने लगता है। कई-गीगाबाइट मैट्रिक्स के लिए DuckDB बेहतर औज़ार है।

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

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

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

TSV और Parquet की तुलना
TSVParquet
पूरा नामTab-Separated ValuesApache Parquet
फ़ाइल एक्सटेंशन.tsv, .tab.parquet
मीडिया टाइपtext/tab-separated-valuesapplication/vnd.apache.parquet
कंप्रेशनबिना नुक़सान — कुछ छोड़ा नहीं जाता
पहली बार प्रकाशित19932013
प्रकाशकApache Software Foundation
विनिर्देशIANA text/tab-separated-values
लाइसेंसखुला मानकखुला मानक
आज की स्थितिमौजूदामौजूदा
ब्राउज़र में खुलता हैकोई ब्राउज़र नहींकोई ब्राउज़र नहीं
इसकी जगह विचारणीयCSV, JSONCSV, 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 में। किसी को सौंपने के लिए आम तौर पर पुराना वाला ज़्यादा सुरक्षित रहता है; नया वाला वही काम कम बाइट में कर देता है।

TSV से Parquet: आम सवाल

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

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

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

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

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

नहीं। Parquet वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।

क्या TSV से Parquet बिना नुक़सान का है?

कुछ नहीं खोता। TSV और Parquet — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

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