나는 다음과 같은 DF 있습니다Spark Hive - 윈도우 함수가있는 UDFArgumentTypeException입니까?
WindowSpec window = Window.partitionBy(df.col("id")).orderBy(df.col("eventdate").desc());
df.select(df.col("*"),rank().over(window).alias("rank")) //error for this line
.filter("rank <= 2")
.show();
내가 싶어하는 것은 마지막 두 항목이다 마지막으로 최신 날짜로 (:
+------------+----------------------+-------------------+
|increment_id|base_subtotal_incl_tax| eventdate|
+------------+----------------------+-------------------+
| 1086| 14470.0000|2016-06-14 09:54:12|
| 1086| 14470.0000|2016-06-14 09:54:12|
| 1086| 14470.0000|2015-07-14 09:54:12|
| 1086| 14470.0000|2015-07-14 09:54:12|
| 1086| 14470.0000|2015-07-14 09:54:12|
| 1086| 14470.0000|2015-07-14 09:54:12|
| 1086| 1570.0000|2015-07-14 09:54:12|
| 5555| 14470.0000|2014-07-14 09:54:12|
| 5555| 14470.0000|2014-07-14 09:54:12|
| 5555| 14470.0000|2014-07-14 09:54:12|
| 5555| 14470.0000|2014-07-14 09:54:12|
+------------+----------------------+-------------------+
내가 같은 윈도우 함수를 실행하기 위해 노력하고있어 그것은 각 사용자에 대해, 처음 두 행) 내림차순으로 정렬 된 이후,하지만 :
+------------+----------------------+-------------------+
|increment_id|base_subtotal_incl_tax| eventdate|
+------------+----------------------+-------------------+
| 1086| 14470.0000|2016-06-14 09:54:12|
| 1086| 14470.0000|2016-06-14 09:54:12|
| 5555| 14470.0000|2014-07-14 09:54:12|
| 5555| 14470.0000|2014-07-14 09:54:12|
+------------+----------------------+-------------------+
하지만 난이 얻을 :
,536,+------------+----------------------+-------------------+----+
|increment_id|base_subtotal_incl_tax| eventdate|rank|
+------------+----------------------+-------------------+----+
| 5555| 14470.0000|2014-07-14 09:54:12| 1|
| 5555| 14470.0000|2014-07-14 09:54:12| 1|
| 5555| 14470.0000|2014-07-14 09:54:12| 1|
| 5555| 14470.0000|2014-07-14 09:54:12| 1|
| 1086| 14470.0000|2016-06-14 09:54:12| 1|
| 1086| 14470.0000|2016-06-14 09:54:12| 1|
+------------+----------------------+-------------------+----+
무엇이 누락 되었습니까?
[OLD가] - 원래, 나는 오류가 발생했습니다, 이것은 지금 해결 :
WindowSpec window = Window.partitionBy(df.col("id"));
df.select(df.col("*"),rank().over(window).alias("rank")) //error for this line
.filter("rank <= 2")
.show();
그러나 이것은 코멘트와 위에 표시된 라인에 대한 오류 Exception in thread "main" org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException: One or more arguments are expected.
를 반환합니다. 내가 뭘 놓치고 있니? 이 오류는 무엇을 의미합니까? 고맙습니다! 이 때문에, 에러 단순히 의미가 순서없이
WindowSpec window = Window.partitionBy(df.col("id")).orderBy(df.col("payment"));
:
고마워요! 나는 당신의 대답을 받아 들일 것이지만, 나의 질문을 업데이트했다. 이 일을 도울 수 있으면 너무 감사 할 것입니다. –