विवरण
एक dataframe df
स्पार्क और स्पार्कएसक्यूएल: विंडो फ़ंक्शन का अनुकरण कैसे करें?
id | date
---------------
1 | 2015-09-01
2 | 2015-09-01
1 | 2015-09-03
1 | 2015-09-04
2 | 2015-09-04
मैं एक चल काउंटर या सूचकांक बनाना चाहते हैं को देखते हुए,
- एक ही आईडी के आधार पर वर्गीकृत और
- उस समूह में तिथि के अनुसार छाँटे,
इस प्रकार
id | date | counter
--------------------------
1 | 2015-09-01 | 1
1 | 2015-09-03 | 2
1 | 2015-09-04 | 3
2 | 2015-09-01 | 1
2 | 2015-09-04 | 2
यह कुछ है जो मैं विंडो फ़ंक्शन के साथ प्राप्त कर सकता हूं, उदा।
val w = Window.partitionBy("id").orderBy("date")
val resultDF = df.select(df("id"), rowNumber().over(w))
दुर्भाग्य से, स्पार्क 1.4.1 नियमित dataframes के लिए खिड़की कार्यों का समर्थन नहीं करता:
org.apache.spark.sql.AnalysisException: Could not resolve window function 'row_number'. Note that, using window functions currently requires a HiveContext;
प्रश्न
- मैं वर्तमान स्पार्क 1.4.1 पर ऊपर गणना कैसे प्राप्त कर सकते बिना खिड़की के कार्यों का उपयोग कर?
- स्पार्क में नियमित डेटाफ्रेम के लिए विंडो फ़ंक्शन कब समर्थित होंगे?
धन्यवाद!
क्या आपको डेटाफ्रेम और एसक्यूएल का उपयोग करने की आवश्यकता है, या आप आरडीडी का उपयोग कर सकते हैं? यह समूह द्वारा विधि के साथ काफी सरल है। –
@ किर्कबॉडहर्स्ट: आरडीडी भी ठीक रहेगा। क्या आप अपने विचार को थोड़ा कोड अंश के साथ स्केच कर सकते हैं? स्पार्कएसक्यूएल के रूप में मैं वर्तमान में ऐसा करने का तरीका नहीं देखता हूं: क्या आपके पास कोई विचार है? –