Jes*_*ica 16 sql apache-spark apache-spark-sql pyspark-sql
我是Spark SQL的新手,我正在尝试将字符串转换为spark数据框中的时间戳.我有一个'2017-08-01T02:26:59.000Z'
名为time_string的列中的字符串
我将此字符串转换为时间戳的代码是
CAST (time_string AS Timestamp)
Run Code Online (Sandbox Code Playgroud)
但这给了我一个时间戳 2017-07-31 19:26:59
为什么要改变时间?有没有办法在不改变时间的情况下做到这一点?
谢谢你的帮助!
Sha*_*ala 20
您可以使用unix_timestamp函数将utc格式化日期转换为时间戳
val df2 = Seq(("a3fac", "2017-08-01T02:26:59.000Z")).toDF("id", "eventTime")
df2.withColumn("eventTime1", unix_timestamp($"eventTime", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").cast(TimestampType))
Run Code Online (Sandbox Code Playgroud)
输出:
+-------------+---------------------+
|userid |eventTime |
+-------------+---------------------+
|a3fac |2017-08-01 02:26:59.0|
+-------------+---------------------+
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
Java 上的解决方案
有一些 Spark SQL 函数可让您使用日期格式。
转换示例:20181224091530 -> 2018-12-24 09:15:30
解决方案(Spark SQL语句):
SELECT
...
to_timestamp(cast(DECIMAL_DATE as string),'yyyyMMddHHmmss') as `TIME STAMP DATE`,
...
FROM some_table
Run Code Online (Sandbox Code Playgroud)
您可以通过org.apache.spark.sql.SparkSession的实例来使用 SQL 语句。例如如果要执行一条sql语句,Spark提供了如下的解决方案:
...
// You have to create an instance of SparkSession
sparkSession.sql(sqlStatement);
...
Run Code Online (Sandbox Code Playgroud)
笔记:
归档时间: |
|
查看次数: |
26495 次 |
最近记录: |