Selecting II
SQL की तरह, आप कॉलम-स्तरीय ऑपरेशंस करने के लिए .select() मेथड का भी उपयोग कर सकते हैं. जब आप df.colName नोटेशन से कोई कॉलम चुनते हैं, तो आप उस पर कोई भी कॉलम ऑपरेशन कर सकते हैं और .select() मेथड परिवर्तित कॉलम लौटाएगा. उदाहरण के लिए,
flights.select(flights.air_time/60)
मिनटों की जगह घंटों में फ्लाइट की अवधि वाला कॉलम लौटाता है. आप चयनित कॉलम का नाम बदलने के लिए .alias() मेथड का भी उपयोग कर सकते हैं. तो यदि आप duration_hrs कॉलम को .select() करना चाहते हैं (जो आपके DataFrame में मौजूद नहीं है) तो आप ऐसा कर सकते हैं:
flights.select((flights.air_time/60).alias("duration_hrs"))
इसके समकक्ष Spark DataFrame मेथड .selectExpr() SQL अभिव्यक्तियों को स्ट्रिंग के रूप में लेता है:
flights.selectExpr("air_time/60 as duration_hrs")
यहाँ SQL का as कीवर्ड .alias() मेथड के बराबर है. कई कॉलम चुनने के लिए, आप कई स्ट्रिंग्स पास कर सकते हैं.
याद रखें, आपके वर्कस्पेस में spark नाम का एक SparkSession पहले से मौजूद है, साथ ही flights नाम का Spark DataFrame भी.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark की नींव
अभ्यास निर्देश
हर फ्लाइट की औसत स्पीड दोनों तरीकों से निकालकर एक टेबल बनाइए.
- औसत स्पीड की गणना
distanceकोair_time(घंटों में बदला हुआ) से भाग देकर करें. इस कॉलम का नाम देने के लिए.alias()मेथड का उपयोग करें और इसे"avg_speed"कहें. आउटपुट को वैरिएबलavg_speedमें सेव करें. - कॉलम
"origin", "dest", "tailnum"औरavg_speed(बिना quotes!) चुनें. इसेspeed1के रूप में सेव करें. - यही टेबल
.selectExpr()और SQL अभिव्यक्ति वाली एक स्ट्रिंग का उपयोग करके बनाएँ. इसेspeed2के रूप में सेव करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")
# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)
# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")