1

스파크 1.5.x에서 몇 가지 편의 방법을 추가하여 시간을 처리했습니다.스파크 시차

df.select(datediff($"A", $"B")).show 

그러나 이것은 일수 차이를 반환합니다. 다른 간격으로 변환 할 수있는 옵션이 있습니까? 예 : 연령?

수동으로 난 충분

df.select(year($"A")- year($"B")).show 

을 사용했다. 날짜 차이가 더 정확하게 계산 된 경우 더 좋을 것입니다. 표시되는 월/일 포함 http://howtodoinjava.com/for-fun-only/java-code-to-calculate-age-from-date-of-birth/

현재 spark 2.0.2에 대한 UDF가 있습니까? 또는 차이를 일로 변환하는 옵션이 누락되었습니다. 예 : 연령?

답변

3

Timestamp 유형은 Unix 타임 스탬프 (초)로 변환 될 수 있습니다. 이 해상도가 당신에게 충분하다면 나머지는 산술 연산 일뿐입니다. 예를 들어, 사용자의 필요에 따라

import org.apache.spark.sql.Column 

def secondsBetween(col1: Column, col2: Column) = 
    col2.cast("timestamp").cast("bigint") - col1.cast("timestamp").cast("bigint") 

하고 다시 샘플 : 당신은 초 차이를 계산할 수

def minutesBetween(col1: Column, col2: Column) = 
    (secondsBetween(col1, col2)/60).cast("bigint") 

를 분명히이 일광과 같은 날짜와 시간 처리의 모든 미묘한를 처리하지 않습니다 시간을 절약하거나 초를 뛰어 넘으면 도메인에서 중요하다면 적절한 시간 처리 라이브러리가있는 UDF를 사용하는 것이 좋습니다.