डेटा फ़िल्टर करना
अब जब आपके पास थोड़ा SQL अनुभव है, तो Spark DataFrames के साथ समान ऑपरेशंस पर बात करना आसान हो जाता है।
आइए .filter() मेथड को देखते हैं। जैसा कि आप अनुमान लगा सकते हैं, यह SQL के WHERE क्लॉज़ का Spark समकक्ष है। .filter() मेथड या तो एक ऐसा expression लेता है जिसे हम SQL expression के WHERE क्लॉज़ के बाद लिखते हैं और जिसे एक string के रूप में पास किया जाता है, या फिर boolean (True/False) मानों वाला एक Spark Column।
उदाहरण के लिए, ये दोनों expressions एक जैसा आउटपुट देंगे:
flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()
ध्यान दें कि पहले मामले में, हम .filter() को एक string पास करते हैं। SQL में, हम इस फ़िल्टरिंग कार्य को ऐसे लिखेंगे: SELECT * FROM flights WHERE air_time > 120। Spark का .filter() कोई भी ऐसा expression स्वीकार कर सकता है जो SQL क्वेरी के WHERE क्लॉज़ में जा सकता हो (इस मामले में, "air_time > 120"), बशर्ते उसे string के रूप में पास किया जाए।
ध्यान दें कि इस string में हम टेबल का नाम संदर्भित नहीं करते — जैसे कि हम SQL रिक्वेस्ट में भी नहीं करते।
दूसरे मामले में, हम वास्तव में .filter() को boolean मानों का कॉलम पास करते हैं। याद रखें कि flights.air_time > 120 एक boolean कॉलम लौटाता है जिसमें उन रिकॉर्ड्स के लिए True होता है जिनके flights.air_time 120 से अधिक हैं, अन्यथा False।
याद रखें, आपके workspace में spark नाम का एक SparkSession पहले से मौजूद है, साथ ही Spark DataFrame flights भी।
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark की नींव
अभ्यास निर्देश
.filter()मेथड का उपयोग करके 1000 मील से अधिक उड़ान भरने वाली सभी उड़ानों को दो तरीकों से खोजिए:- पहले,
.filter()को एक SQL string पास कीजिए जो जाँचती है कि distance 1000 से अधिक है। इसेlong_flights1के रूप में सेव करें। - फिर
.filter()को boolean मानों का एक कॉलम पास कीजिए जो वही जाँच करता है। इसेlong_flights2के रूप में सेव करें।
- पहले,
.show()का उपयोग करके दोनों DataFrames के हेड प्रिंट करें और सुनिश्चित करें कि ये वास्तव में बराबर हैं!
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Filter flights by passing a string
long_flights1 = ____.____("____ > ____")
# Filter flights by passing a column of boolean values
long_flights2 = ____.____(____.____ > ____)
# Print the data to check they're equal
____.____()
____.____()