ए (पायथन) उदाहरण से मेरा अनुकरण साफ़ कर देगा।पिछली पंक्तियों (पीईएसपार्क डेटाफ्रेम)
movierecord = spark.createDataFrame([("Alice", 1, ["Avatar"]),("Bob", 2, ["Fargo", "Tron"]),("Alice", 4, ["Babe"]), ("Alice", 6, ["Avatar", "Airplane"]), ("Alice", 7, ["Pulp Fiction"]), ("Bob", 9, ["Star Wars"])],["name","unixdate","movies"])
स्कीमा और dataframe ऊपर देखो द्वारा परिभाषित किया गया इस प्रकार है::
root
|-- name: string (nullable = true)
|-- unixdate: long (nullable = true)
|-- movies: array (nullable = true)
| |-- element: string (containsNull = true)
+-----+--------+------------------+
|name |unixdate|movies |
+-----+--------+------------------+
|Alice|1 |[Avatar] |
|Bob |2 |[Fargo, Tron] |
|Alice|4 |[Babe] |
|Alice|6 |[Avatar, Airplane]|
|Alice|7 |[Pulp Fiction] |
|Bob |9 |[Star Wars] |
+-----+--------+------------------+
मैं चाहता हूँ चलो कहते हैं कि इस प्रकार मैं, लोग हैं, जो कुछ तारीखों पर कुछ फ़िल्मों में देखा की एक चिंगारी dataframe करते हैं उपरोक्त से एक नया डेटाफ्रेम कॉलम उत्पन्न करने के लिए सभी पिछली प्रत्येक उपयोगकर्ता द्वारा देखी गई फिल्में, डुप्लिकेट के बिना ("पिछली" यूनिक्सडेट फ़ील्ड के बिना)। तो इसे इस तरह दिखना चाहिए:
+-----+--------+------------------+------------------------+
|name |unixdate|movies |previous_movies |
+-----+--------+------------------+------------------------+
|Alice|1 |[Avatar] |[] |
|Bob |2 |[Fargo, Tron] |[] |
|Alice|4 |[Babe] |[Avatar] |
|Alice|6 |[Avatar, Airplane]|[Avatar, Babe] |
|Alice|7 |[Pulp Fiction] |[Avatar, Babe, Airplane]|
|Bob |9 |[Star Wars] |[Fargo, Tron] |
+-----+--------+------------------+------------------------+
मैं इसे एक अच्छे तरीके से कैसे कार्यान्वित कर सकता हूं?