Parquet फ़ाइलों के साथ काम करना
CSV फ़ाइलें आयताकार डेटा ऑब्जेक्ट्स (जैसे R के data.frame और Spark के DataFrames) की सामग्री को डिस्क पर सेव करने के लिए बेहतरीन हैं। समस्या यह है कि इन्हें पढ़ना और लिखना काफ़ी धीमा होता है, इसलिए बहुत बड़े डेटासेट्स के लिए ये व्यावहारिक नहीं रहतीं। Parquet फ़ाइलें उच्च-प्रदर्शन वाला विकल्प देती हैं। Spark डेटा के अलावा, parquet फ़ाइलों का उपयोग Hadoop इकोसिस्टम के दूसरे टूल्स जैसे Shark, Impala, Hive, और Pig के साथ भी किया जा सकता है.
तकनीकी रूप से, parquet फ़ाइल कहना पूरी तरह सही नहीं है। जब आप डेटा को parquet फ़ॉर्मेट में स्टोर करते हैं, तो वास्तव में एक पूरा डायरेक्टरी बनता है जिसमें कई फ़ाइलें होती हैं। डेटा कई .parquet फ़ाइलों में बाँटा जाता है ताकि उसे कई मशीनों पर आसानी से स्टोर किया जा सके, और साथ में कुछ मेटाडेटा फ़ाइलें भी होती हैं जो हर कॉलम की जानकारी बताती हैं.
sparklyr spark_read_parquet() के ज़रिए parquet फ़ाइलें इम्पोर्ट कर सकता है। यह फ़ंक्शन एक Spark कनेक्शन, बनने वाले Spark DataFrame का नाम बताने वाली एक स्ट्रिंग, और parquet डायरेक्टरी का पाथ लेता है। ध्यान दें कि यह फ़ंक्शन डेटा को सीधे Spark में इम्पोर्ट करता है, जो आम तौर पर R में डेटा इम्पोर्ट करके फिर copy_to() से R से Spark में कॉपी करने की तुलना में तेज़ होता है.
spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में sparklyr के साथ Spark परिचय
अभ्यास निर्देश
आपके लिए spark_conn नाम से एक Spark कनेक्शन बनाया गया है। parquet डायरेक्टरी की ओर इशारा करती हुई एक स्ट्रिंग (उस फ़ाइल सिस्टम पर जहाँ R चल रहा है) parquet_dir के रूप में दी गई है।
dir()का उपयोग करके parquet डायरेक्टरी में मौजूद फ़ाइलों के absolute फ़ाइल पाथ्स की सूची बनाइए और परिणामfilenamesको असाइन कीजिए।- पहला आर्ग्युमेंट वही डायरेक्टरी होनी चाहिए जिसकी फ़ाइलें आप सूचीबद्ध कर रहे हैं, यानी
parquet_dir। - absolute (relative नहीं) फ़ाइल पाथ्स प्राप्त करने के लिए
full.names = TRUEभी पास करें।
- पहला आर्ग्युमेंट वही डायरेक्टरी होनी चाहिए जिसकी फ़ाइलें आप सूचीबद्ध कर रहे हैं, यानी
- दो कॉलम वाला एक
data_frameबनाइए।filenameमें अभी-अभी निकाले गए फ़ाइलनेम्स हों, बिना डायरेक्टरी वाले हिस्से के। इसे फ़ाइलनेम्स कोbasename()में पास करके बनाएँ।size_bytesमें उन फ़ाइलों के आकार (बाइट्स में) हों। इसे फ़ाइलनेम्स कोfile.size()में पास करके बनाएँ।
spark_read_parquet()का उपयोग करके timbre डेटा को Spark में इम्पोर्ट करें और परिणामtimbre_tblको असाइन करें।- पहला आर्ग्युमेंट Spark कनेक्शन होना चाहिए।
- दूसरा आर्ग्युमेंट
"timbre"होना चाहिए। - तीसरा आर्ग्युमेंट
parquet_dirहोना चाहिए।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# parquet_dir has been pre-defined
parquet_dir
# List the files in the parquet dir
filenames <- ___
# Show the filenames and their sizes
data_frame(
filename = ___,
size_bytes = ___
)
# Import the data into Spark
timbre_tbl <- ___