У меня есть фрейм данных, и я хочу свернуть данные в 7 дней и сделать некоторую агрегацию для некоторой функции.Функция окна не работает в Pyspark sqlcontext
У меня есть pyspark SQL dataframe как ------
Sale_Date|P_1|P_2|P_3|G_1|G_2|G_3|Total_Sale|Sale_Amt|Promo_Disc_Amt |
|2013-04-10| 1| 9| 1| 1| 1| 1| 1| 295.0|0.0|
|2013-04-11| 1| 9| 1| 1| 1| 1| 3| 567.0|0.0|
|2013-04-12| 1| 9| 1| 1| 1| 1| 2| 500.0|200.0|
|2013-04-13| 1| 9| 1| 1| 1| 1| 1| 245.0|20.0|
|2013-04-14| 1| 9| 1| 1| 1| 1| 1| 245.0|0.0|
|2013-04-15| 1| 9| 1| 1| 1| 1| 2| 500.0|200.0|
|2013-04-16| 1| 9| 1| 1| 1| 1| 1| 250.0|0.0|
Я применил функцию окна над кадром данных следующим образом -
days = lambda i: i * 86400
windowSp = Window().partitionBy(dataframeOfquery3["P_1"],dataframeOfquery3["P_2"],dataframeOfquery3["P_3"],dataframeOfquery3["G_1"],dataframeOfquery3["G_2"],dataframeOfquery3["G_3"])\
.orderBy(dataframeOfquery3["Sale_Date"].cast("timestamp").cast("long").desc())\
.rangeBetween(-(days(7)), 0)
Теперь я хочу, чтобы выполнить некоторые например, использование некоторых оконных функций, таких как:
df = dataframeOfquery3.select(min(dataframeOfquery3["Sale_Date"].over(windowSp).alias("Sale_Date")))
df.show()
Но он дает followin g.
py4j.protocol.Py4JJavaError: An error occurred while calling o138.select.
: org.apache.spark.sql.AnalysisException: Could not resolve window function 'min'. Note that, using window functions currently requires a HiveContext;
Я использую Apache Spark 1.6.0, предварительно построенный на Hadoop.
Да. Я видел ошибку. Но я следил за следующими темами. [thread 1] (http://stackoverflow.com/questions/32769328/how-to-use-window-functions-in-pyspark-using-dataframes), [thread 2] (http://stackoverflow.com/questions/33207164/spark-window-functions-rangebetween-dates) и [Databricks thread] (https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html). . Во всех вышеперечисленных функциях окна правильно работает с sqlcontext pyspark. @eliasah –
В какой-то среде это сложно. Я знаю все эти темы. Эти потоки не представляют hivecontext, но на самом деле это необходимо, и они даже не говорят о конфигурациях кластера. Я представил вам то, как я это делаю. – eliasah
Есть ли способ использовать pyspark.sql.window в pyspark sql context без HiveContext? или Как я могу управлять этим типом ситуации на pyspark.sql.sqlcontext? Пожалуйста, предложите @eliasah –