[SCALA] 스파크 스칼라 앱에 대한 동일한 dataframe에서 날짜 컬럼에 일 칼럼의 번호 추가
SCALA스파크 스칼라 앱에 대한 동일한 dataframe에서 날짜 컬럼에 일 칼럼의 번호 추가
나는 열 ( "ID", "CURRENT_DATE", "일")의 dataframe 안양를하고 난 "CURRENT_DATE"을하여 "일"을 추가하고 불꽃 스칼라를 사용하여 "NEW_DATE"라는 새로운 열이있는 새로운 dataframe을 만들려고하고 있어요 DATE_ADD 함수 ()
val newDF = df.withColumn("new_Date", date_add(df("current_date"), df("days").cast("Int")))
그러나 기능 DATE_ADD 같은 외모는 Int 인 값이 아닌 열을 받아들입니다. 어떻게 이러한 경우에서 원하는 출력을 얻을 수 있습니까? 내가 원하는 출력을 얻을하는 데 사용할 수있는 다른 기능이 있습니까?
스파크 버전 : 1.6.0 스칼라 버전 : 2.10.6
해결법
-
==============================
1.작은 사용자 정의 UDF는 가능한이 날짜 연산하기 위해 사용될 수있다.
작은 사용자 정의 UDF는 가능한이 날짜 연산하기 위해 사용될 수있다.
import org.apache.spark.sql.functions.udf import java.util.concurrent.TimeUnit import java.util.Date import java.text.SimpleDateFormat val date_add = udf((x: String, y: Int) => { val sdf = new SimpleDateFormat("yyyy-MM-dd") val result = new Date(sdf.parse(x).getTime() + TimeUnit.DAYS.toMillis(y)) sdf.format(result) } )
용법:
scala> val df = Seq((1, "2017-01-01", 10), (2, "2017-01-01", 20)).toDF("id", "current_date", "days") df: org.apache.spark.sql.DataFrame = [id: int, current_date: string, days: int] scala> df.withColumn("new_Date", date_add($"current_date", $"days")).show() +---+------------+----+----------+ | id|current_date|days| new_Date| +---+------------+----+----------+ | 1| 2017-01-01| 10|2017-01-11| | 2| 2017-01-01| 20|2017-01-21| +---+------------+----+----------+
-
==============================
2.필요가 UDF를 사용하지 않으려면, 당신은 SQL 표현식을 사용하여 수행 할 수 있습니다
필요가 UDF를 사용하지 않으려면, 당신은 SQL 표현식을 사용하여 수행 할 수 있습니다
val newDF = df.withColumn("new_date", expr("date_add(current_date,days)"))
from https://stackoverflow.com/questions/44361332/add-number-of-days-column-to-date-column-in-same-dataframe-for-spark-scala-app by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 JSON 파일에 액세스 하위 기관에? (0) | 2019.11.18 |
---|---|
[SCALA] 스칼라 유형 매개 변수 오류, 형식 매개 변수의 회원이 아니 (0) | 2019.11.18 |
[SCALA] 자바에서 scala.None 액세스 (0) | 2019.11.18 |
[SCALA] 불꽃의 모든 열 / 행 전체를 처리 UDF (0) | 2019.11.18 |
[SCALA] 어떻게 CSV 파일에서 스키마를 만들고 파일에 해당 스키마 저장 / 유지하기 위해? (0) | 2019.11.18 |