【发布时间】:2021-07-02 15:04:40
【问题描述】:
我有一个字符串列,其值类似于
“2010 年 1 月 23 日星期六 19:23:32 +0000”。
如何在 Spark 中将其转换为时间戳?
下面是代码
package sample.spark.com;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.functions;
import org.apache.spark.sql.functions.*;
import org.apache.spark.sql.expressions.*;
import org.apache.spark.sql.types.DataTypes;
public class test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
SparkSession session = SparkSession.builder().appName("ProspectPerson").master("local[*]").getOrCreate();
session.sparkContext().setLogLevel("ERROR");
List<String> test1 = new ArrayList<>();
//test1.add("Sat Jan 23 19:23:32 +0000 2010");
test1.add("Sat Jan 23 19:23:32 +0000 2010");
//EEE MMM dd HH:mm:ss xxxx yyyy
Dataset<Row> initialDF = session.createDataset(test1,Encoders.STRING()).toDF();
initialDF = initialDF.withColumn("test", functions.to_timestamp(initialDF.col("value"),"EE MMM dd HH:mm:ss xxxx yyyy"));
initialDF.show(false);
}
}
如果我排除一周中的某一天,即星期六,则模式“MMM dd HH:mm:ss xxxx yyyy”适用于“Jan 23 19:23:32 +0000 2010”。那么问题是如何提供日期时间模式?
【问题讨论】:
-
上面链接中的日期格式与问题中提到的不一样
-
请阅读文档:spark.apache.org/docs/latest/sql-ref-datetime-pattern.html 并展示您解决问题的尝试。
-
好的,我用代码更新了问题。
标签: java apache-spark apache-spark-sql