2017-02-02 5 views
0

스칼라에서 창 함수를 사용하고 싶습니다.창 함수/scala/spark 1.6

내가 다음 하나 인 CSV 파일이 :이 데이터 프레임을 통해 윈도우 함수를 적용 할 때

id;date;value1 
1;63111600000;100 
1;63111700000;200 
1;63154800000;300 

을 는 때로는 작동하고 때로는 실패

val df = loadCSVFile() 
val tw = Window.orderBy(date).partitionBy(id).rangeBetween(-5356800000,0) 
df.withColumn(value1___min_2_month, min(df.col("value1")).over(tw)) 
+---+-----------+--------------------+ 
| id|  date|value1___min_2_month| 
+---+-----------+--------------------+ 
| 1|63111600000|     100| 
| 1|63111700000|     100| 
| 1|63154800000|     100| 
+---+-----------+--------------------+ 

그래서 작동합니다! 내가 (이전 exemple의 행을 포함하는) 더 큰 숫자로 할 때 그러나 나는 다음과 같은 결과를 가지고

val tw = 

Window.orderBy(date).partitionBy(id).rangeBetween(-8035200000,0) \n 
df.withColumn(value1___min_3_month, min(df.col("value1")).over(tw)) 
+---+-----------+--------------------+ 
| id|  date|value1___min_3_month| 
+---+-----------+--------------------+ 
| 1|63111600000|    null| 
| 1|63111700000|    null| 
| 1|63154800000|    null| 
+---+-----------+--------------------+ 

답변

2

L와 전화 번호가 접미사 :

scala> -10000000000 
<console>:1: error: integer number too large 
-10000000000 
^ 

scala> -10000000000L 
res0: Long = -10000000000 
+0

내 문제는이 숫자가 사실 인 것을 변수 (long 타입)과 변수가 작동하지 않습니다. –

+0

그러면 변수를 전달하기 만하면됩니다. – pedrofurla

+0

그것은 정확하지 않습니다, 내 편집 전에 참조하십시오 :) –