[SCALA] 스파크 스칼라 : 시간 또는 분에 의해 두 열의 참조 DateDiff
SCALA스파크 스칼라 : 시간 또는 분에 의해 두 열의 참조 DateDiff
나는 대안의 시간 차이의 분 차이를 받거나 싶습니다하는 dataframe에 두 개의 타임 스탬프 열이. 현재 내가 수행하여, 둥근을 사용해, 하루 차이를 얻을 수 있어요
val df2 = df1.withColumn("time", datediff(df1("ts1"), df1("ts2")))
그러나, 나는 문서 페이지에서 보았을 때 https://issues.apache.org/jira/browse/SPARK-8185 나는 장치를 변경할 수있는 추가 매개 변수를 참조하지 않았다. 자신의 다른 기능은 나는이에 사용해야됩니까?
해결법
-
==============================
1.당신은 초 차이로를 얻을 수 있습니다
당신은 초 차이로를 얻을 수 있습니다
import org.apache.spark.sql.functions._ val diff_secs_col = col("ts1").cast("long") - col("ts2").cast("long")
그럼 당신은 당신이 원하는 유닛을 얻기 위해 약간의 수학을 할 수 있습니다. 예를 들면 :
val df2 = df1 .withColumn( "diff_secs", diff_secs_col ) .withColumn( "diff_mins", diff_secs_col / 60D ) .withColumn( "diff_hrs", diff_secs_col / 3600D ) .withColumn( "diff_days", diff_secs_col / (24D * 3600D) )
또는 pyspark에서 :
from pyspark.sql.functions import * diff_secs_col = col("ts1").cast("long") - col("ts2").cast("long") df2 = df1 \ .withColumn( "diff_secs", diff_secs_col ) \ .withColumn( "diff_mins", diff_secs_col / 60D ) \ .withColumn( "diff_hrs", diff_secs_col / 3600D ) \ .withColumn( "diff_days", diff_secs_col / (24D * 3600D) )
-
==============================
2.다니엘 드 폴라에 의해 주어진 대답은 작동하지만, 그 해결책은 차이가 테이블의 모든 행에 대해 필요한 경우 일을하지 않습니다. 다음은 각 행에 대해 그렇게하는 솔루션입니다 :
다니엘 드 폴라에 의해 주어진 대답은 작동하지만, 그 해결책은 차이가 테이블의 모든 행에 대해 필요한 경우 일을하지 않습니다. 다음은 각 행에 대해 그렇게하는 솔루션입니다 :
import org.apache.spark.sql.functions val df2 = df1.selectExpr("(unix_timestamp(ts1) - unix_timestamp(ts2))/3600")
이 첫번째 변환 초 유닉스 타임 스탬프 열의 데이터는, 그것들을 감산하고 시간 차이로 변환한다.
기능의 유용한 목록에서 찾을 수 있습니다 : http://spark.apache.org/docs/latest/api/scala/#org.apache.spark.sql.functions$
from https://stackoverflow.com/questions/37058016/spark-scala-datediff-of-two-columns-by-hour-or-minute by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 이 경우 클래스 일치 패턴은 어떻게 작동합니까? (0) | 2019.11.17 |
---|---|
[SCALA] 스파크 SQL 중첩 withColumn (0) | 2019.11.17 |
[SCALA] 스칼라 : 개체 이니셜 라이저에서 병렬 컬렉션 요령에 프로그램을 원인 (0) | 2019.11.17 |
[SCALA] 어떻게 튜플에 배열을 변환하는? (0) | 2019.11.17 |
[SCALA] 스칼라 프로젝트는 이클립스에서 컴파일되지 않습니다; "메인 클래스를 찾을 수 없습니다." (0) | 2019.11.17 |