2017-09-21 2 views
0

문자열에서 타임 스탬프로 변환해야하는 스파크 앱이 있습니다. 내 코드입니다.스파크 데이터 프레임을 타임 스탬프로 변환 문자열 - 빈 값으로 null을 반환합니다.

val df = sc.parallelize(Seq("09/18/2017","")).toDF("sDate") 
+----------+ 
|  sDate| 
+----------+ 
|09/18/2017| 
|   | 
+----------+ 
val ts = unix_timestamp($"sDate","MM/dd/yyyy").cast("timestamp") 
df.withColumn("ts", ts).show() 
+----------+--------------------+ 
|  sDate|     ts| 
+----------+--------------------+ 
|09/18/2017|2017-09-18 00:00:...| 
|   |    null| 
+----------+--------------------+ 

변환이 잘되고 있지만 값이 비어 있으면 캐스팅 후에 null이됩니다.

소스 값이 비어 있으면 아무 것도 표시되지 않습니다.

답변

1

당신은

+----------+-------------------+ 
|  sDate|     ts| 
+----------+-------------------+ 
|09/18/2017|2017-09-18 00:00:00| 
|   |    empty| 
+----------+-------------------+ 
같이 출력을 줄 것이다
import org.apache.spark.sql.functions._ 
val ts = unix_timestamp($"sDate","MM/dd/yyyy").cast("timestamp") 
df.withColumn("ts", when(ts.isNotNull, ts).otherwise(lit("empty"))).show() 

아래로 when 기능을 사용할 수 있습니다
관련 문제