我有一个字符串列,其值如下
“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);
}
}
如果我排除了星期几,即sat,那么模式“mmm dd hh:mm:ss x yyy”与“jan 23 19:23:32+0000 2010”配合得很好。所以问题是如何提供datetime模式?
1条答案
按热度按时间xu3bshqb1#
似乎datetime解析器无法解析输入字符串中的星期几。您可以使用
substring
(假设它总是有3个字母+1个空格):