Как извлечь дату и час в указанном часовом поясе c из отметки времени в Spark? - PullRequest
0 голосов
/ 02 мая 2020

В моем наборе данных у меня есть столбец типа long , который обозначает время события. Я хочу получить дату и час PST этой эпохи в виде еще двух отдельных столбцов.

Как мне go узнать об этом?

Я написал UDF для получения DateTime из отметки времени эпохи:

def getDateTimeFromTs(timezone: String): UserDefinedFunction = udf((timestamp: Long) => {
    val date = new Date(timestamp)
    val format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    format.setTimeZone(TimeZone.getTimeZone(timezone))
    format.format(date)
})

Я могу использовать функцию hour в Spark, чтобы получить час из указанного выше столбца dateTime. Но как мне получить дату сейчас?

1 Ответ

0 голосов
/ 02 мая 2020

Используйте Spark во встроенных функциях from_unixtime и to_utc_timestamp/from_utc_timestamp, чтобы получить время эпохи в PST.

  • Для извлечения дата используйте любую из этих date(), to_date(), date_format(), from_unix_timestamp() функций.

  • Для извлечения час используйте любая из этих hour(), date_format(), from_unix_timestamp() функций.


Example:

spark.sql("select from_unixtime('1588383884') as ts,
to_utc_timestamp(from_unixtime('1588383884'),'PST') to_utc_from_pst,from_utc_timestamp(from_unixtime('1588383884'),'PST') as from_utc_to_pst").
show()
//+-------------------+-------------------+-------------------+
//|                 ts|    to_utc_from_pst|    from_utc_to_pst|
//+-------------------+-------------------+-------------------+
//|2020-05-01 20:44:44|2020-05-02 03:44:44|2020-05-01 13:44:44|
//+-------------------+-------------------+-------------------+

//extract date from timestamp    
spark.sql("select date(from_unixtime('1588383884')) as date").show()
spark.sql("select to_date(from_unixtime('1588383884')) as date").show()
spark.sql("select date_format((from_unixtime('1588383884')),'yyyy-MM-dd') as date").show()
//+----------+
//|      date|
//+----------+
//|2020-05-01|
//+----------+

//extract hour from timestamp
spark.sql("select date_format((from_unixtime('1588383884')),'HH') as hour").show()
spark.sql("select hour(from_unixtime('1588383884')) as hour").show()
spark.sql("select from_unixtime('1588383884','HH') as hour").show()
//+----+
//|hour|
//+----+
//|  20|
//+----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...