शुरू करेंमुफ़्त में शुरू करें

हर अध्याय के लिए सबसे अधिक आवृत्ति वाले 3-ट्यूपल

अब हम एक क्वेरी को एक बड़ी क्वेरी में सबक्वेरी के रूप में इस्तेमाल करेंगे. Spark SQL, SQL की एडवांस्ड फीचर्स को सपोर्ट करता है. पहले आपने 12 अध्यायों वाली पूरी किताब में सबसे आम शब्द-क्रम कैसे निकालना है, यह सीखा था. अब आप हर एक अध्याय के लिए सबसे अधिक बार आने वाला 3-ट्यूपल निकालेंगे. आप यह प्रति समूह टॉप रो पाने के लिए विंडो फंक्शन का उपयोग करके करेंगे.

एक टेबल है जिसमें कॉलम word, id, chapter हैं.

  1. chapter कॉलम अध्याय के नंबर को दर्शाता है.
  2. word कॉलम दस्तावेज़ में एकल शब्द को दर्शाता है.
  3. id कॉलम दस्तावेज़ में शब्द की पोज़िशन को दर्शाता है.

हमारे पास निम्नलिखित क्वेरी भी है:

subquery = """
SELECT chapter, w1, w2, w3, COUNT(*) as count
FROM
(
    SELECT
    chapter,
    word AS w1,
    LEAD(word, 1) OVER(PARTITION BY chapter ORDER BY id ) AS w2,
    LEAD(word, 2) OVER(PARTITION BY chapter ORDER BY id ) AS w3
    FROM text
)
GROUP BY chapter, w1, w2, w3
ORDER BY chapter, count DESC
"""
spark.sql(subquery).show(5)
+-------+---+-----+----+-----+
|chapter| w1|   w2|  w3|count|
+-------+---+-----+----+-----+
|      1| up|   to| the|    6|
|      1|one|   of| the|    6|
|      1| in|front|  of|    5|
|      1| up|  and|down|    5|
|      1| it|  was|   a|    5|
+-------+---+-----+----+-----+
only showing top 5 rows

इस टेबल से आप यह निर्धारित कर सकते हैं कि वांछित परिणाम की पहली पंक्ति होगी:

+-------+---+-----+----+-----+
|chapter| w1|   w2|  w3|count|
+-------+---+-----+----+-----+
|      1| up|   to| the|    6|
+-------+---+-----+----+-----+

आपका कार्य है कि subquery को एक बड़ी क्वेरी में सबक्वेरी के रूप में उपयोग करके प्रति अध्याय सबसे अधिक आवृत्ति वाला 3-ट्यूपल प्राप्त करें. अपेक्षित परिणाम का schema वही रहेगा, लेकिन प्रति अध्याय केवल एक पंक्ति होगी. प्रति अध्याय प्रति पंक्ति रो नंबर प्राप्त करने के लिए ROW_NUMBER() का उपयोग करें.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python में Spark SQL परिचय

पाठ्यक्रम देखें

अभ्यास निर्देश

  • प्रति अध्याय सबसे अधिक आवृत्ति वाला 3-ट्यूपल निकालें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

#   Most frequent 3-tuple per chapter
query = """
SELECT chapter, w1, w2, w3, count FROM
(
  SELECT
  chapter,
  ____() OVER (PARTITION BY chapter ORDER BY ____ DESC) AS row,
  w1, w2, w3, count
  FROM ( %s )
)
WHERE row = ____
ORDER BY chapter ASC
""" % subquery

spark.sql(query).show()
कोड संपादित करें और चलाएँ