스파크 프로그래밍을 하면서 사용한 시간 관련 기능들을 여기 모아둔다.
< Unix time 을 알아볼 수 있는 단위로 바꾸기 >
아래 명령어를 사용하여 임의로 만들 수 있다.
val timestamp: Long = System.currentTimeMillis / 1000
times 라는 df 안에 유닉스 시간이 주르륵 있는 상황
scala> times.show
+----------+
| value|
+----------+
|1593577235|
|1593576415|
|1593578261|
.....
아래처럼 바꿀 수 있다.
scala> times.select(col("value"), from_unixtime(col("value"),"yyyy-MM-dd hh:mm:ss").as("UTC date")).withColumn("Seoul Time", from_utc_timestamp(col("date"), "Asia/Seoul")).show
+----------+-------------------+-------------------+
| value| UTC date| Seoul Time|
+----------+-------------------+-------------------+
|1593577235|2020-07-01 04:20:35|2020-07-01 13:20:35|
|1593576415|2020-07-01 04:06:55|2020-07-01 13:06:55|
|1593578261|2020-07-01 04:37:41|2020-07-01 13:37:41|
.....
https://sparkbyexamples.com/spark/spark-epoch-time-to-timestamp-date/
https://sparkbyexamples.com/spark/spark-sql-unix-timestamp/
https://hellomuzi.tistory.com/44
spark 에서 각종 시간 다루는 방법 : https://medium.com/expedia-group-tech/deep-dive-into-apache-spark-datetime-functions-b66de737950a
아래 블로그에서 실시간으로 변환을 해볼 수 있다.
https://heavenly-appear.tistory.com/257
< date 에 일 수 (day) 더하고 빼기 >
아래 함수를 사용해보자.
import java.text.SimpleDateFormat import java.util.Calendar def dateAddDay(date: String, days: Int, inputFormat: String, outputFormat: String) : String = { val dateAux = Calendar.getInstance() dateAux.setTime(new SimpleDateFormat(inputFormat).parse(date)) dateAux.add(Calendar.DATE, days) return new SimpleDateFormat(outputFormat).format(dateAux.getTime()) } |
http://bigdatatech.taleia.software/2016/01/11/add-and-subtract-days-from-a-timestamp-in-java-scala/
< 날짜가 a와 b 사이에 있는지 확인하기 >
org.joda.time.LocalDate 의 isAfter, isBefore 등의 메소드를 사용하여
내가 알아보고 싶은 날짜가 특정 날짜 사이에 있는지 판단한다.
시작 날짜 이상 끝 날짜 미만 으로 체크한다. 아래처럼.
from<= 날짜 <to
import org.joda.time.{Days, LocalDate} def betweenDate(date:String, from:String, to:String):Boolean = { val d = LocalDate.parse(date) val f = LocalDate.parse(from) val t = LocalDate.parse(to) if(t.isBefore(f)) return false d.isEqual(f) || (d.isAfter(f) && d.isBefore(t)) } |
그 밖의 기능에 대해 stackoverflow 의 답변들을 참고해본다.
stackoverflow.com/a/60645675/5868252
< column 단위로, 날짜 string 에서 month, day 등 추출하기 >
아래 참고
https://ourcstory.tistory.com/166
< timestamp 를 date 로 변환>
timestamp to date
아래 참고
https://sparkbyexamples.com/spark/spark-convert-timestamp-to-date/
'Spark' 카테고리의 다른 글
[Spark] List 값을 df row 에 넣는 법 링크 (0) | 2020.08.12 |
---|---|
[SBT] 자세한 설명 링크 (0) | 2020.08.11 |
[Spark] 기존 Column 기준으로 계산한 값 Column에 추가하기 (0) | 2020.08.05 |
[Spark] Cluster 모드 vs Client 모드 (0) | 2020.07.31 |
[Spark] CentOS 위에서 sbt 설치하기 (0) | 2020.07.23 |