5

나는 Spark SQL, Scala에서 Spark DataFrame을위한 윈도우 슬라이드 함수를보고있다.spark sql window function lag

데이터 프레임에 Col1, Col1, Col1, date 열이 있습니다.

Col1 Col2 Col3 date  volume new_col 
         201601 100.5 
         201602 120.6 100.5 
         201603 450.2 120.6 
         201604 200.7 450.2 
         201605 121.4 200.7` 

는 지금은 위 그림과 같이 하나 개의 행이 아래로 슬라이드 이동과 이름 (new_col)에 새 열을 추가 할.

나는 창 기능을 사용하기 위해 아래 옵션을 시도했다.

val windSldBrdrxNrx_df = df.withColumn("Prev_brand_rx", lag("Prev_brand_rx",1)) 

아무에게도 어떻게 도와 줄 수 있습니까? 당신은 정확하게 모든 당신이 놓친하고있는

+0

@Ramesh to Spark 2.0, 사용자는 윈도우 함수를 적용하기 위해'SQLContext' 대신'HiveContext'를 사용해야했습니다. 'HiveContext'는'SparkContext'의 인스턴스를 전달함으로써'SQLContext'와 같은 방식으로 생성됩니다. 만약 내가 올바르게 기억하고 있다면 org.apache.spark : spark-hive_2.10을 Spark 배포판에 적절한 버전으로 포함시켜야합니다. –

+0

@msrinivas, 답변 감사합니다. – Ramesh

답변

9

이 코드는 스파크 쉘에서 실행 된 lag

val df = sc.parallelize(Seq((201601, 100.5), 
    (201602, 120.6), 
    (201603, 450.2), 
    (201604, 200.7), 
    (201605, 121.4))).toDF("date", "volume") 

val w = org.apache.spark.sql.expressions.Window.orderBy("date") 

import org.apache.spark.sql.functions.lag 

val leadDf = df.withColumn("new_col", lag("volume", 1, 0).over(w)) 

leadDf.show() 

+------+------+-------+ 
| date|volume|new_col| 
+------+------+-------+ 
|201601| 100.5| 0.0| 
|201602| 120.6| 100.5| 
|201603| 450.2| 120.6| 
|201604| 200.7| 450.2| 
|201605| 121.4| 200.7| 
+------+------+-------+ 

over(window expression)입니다 2.0.2

당신은 지연의 문제를 해결할 수있는 두 개의 패키지 아래 가져올 수 있습니다
+0

내 컴퓨터에 1.5.2 (spark-hive jar)를로드하기 위해 1.5.2 설정 및 메이븐의 문제가 발생하지 않았습니다. – mrsrinivas

+0

하이브 컨텍스트를 지금 만들 수 있습니다. 하지만 여전히 같은 오류가 발생합니다. – Ramesh

+0

나는 데이터 프레임이 sqlcontext를 사용하여 생성 되었기 때문에 여전히 윈도우 함수를 사용할 수 없다고 생각한다. – Ramesh

1

의존성.

import org.apache.spark.sql.functions.{lead, lag} 
import org.apache.spark.sql.expressions.Window