DB2时间戳数据导入到SparkSql时,怎样转换为SparkSql中的timestamp? 50
DB2数据库到处的数据文件中包含时间戳,格式为yyyy-MM-dd-HH.mm.ss.SSSSSS,如:2017-01-01-12.00.00.120189当通过spar...
DB2数据库到处的数据文件中包含时间戳,
格式为yyyy-MM-dd-HH.mm.ss.SSSSSS,
如:2017-01-01-12.00.00.120189
当通过spark读取时指定读取的格式为yyyy-MM-dd HH.mm.ss.SSS
会出现将最后的6位SSSSSS进行计算,除以1000,算出对应的秒,进位到秒位上,出现错误,转化后为:2017-01-01 12:02:00.189,被增加了两分钟。
具体代码如下:
Dataset<Row> dataset = sparkSession.read()
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.option("delimiter", ",")
.option("timestampFormat", "yyyy-MM-dd-HH.mm.ss.SSS")
.option("mode", "FAILFAST")
.schema(schema)
.load("src/test/resource/file/person_10h_timestamp.txt");
dataset.show();
-------------解决方法---------------------------------------------------------
通过测试,发现可以使用非常规方法实现想要的效果。
如下:
即使用格式为
.option("timestampFormat", "yyyy-MM-dd-HH.mm.ss.SSSFFF")
实现舍弃最后三位。
以下为测试的结果:
// 原始数据:2017-01-01-12.00.00.120189
// 使用yyyy-MM-dd-HH.mm.ss.SSS -> 2017-01-01 12:02:00.189 增加两分钟
// 使用yyyy-MM-dd-HH.mm.ss.SSSSSS -> 2017-01-01 12:02:00.189 增加两分钟
// 使用yyyy-MM-dd-HH.mm.ss.SSSFFF -> 2017-01-01 12:00:00.12 OK
// 使用yyyy-MM-dd-HH.mm.ss.SSSCCC -> 报错 展开
格式为yyyy-MM-dd-HH.mm.ss.SSSSSS,
如:2017-01-01-12.00.00.120189
当通过spark读取时指定读取的格式为yyyy-MM-dd HH.mm.ss.SSS
会出现将最后的6位SSSSSS进行计算,除以1000,算出对应的秒,进位到秒位上,出现错误,转化后为:2017-01-01 12:02:00.189,被增加了两分钟。
具体代码如下:
Dataset<Row> dataset = sparkSession.read()
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.option("delimiter", ",")
.option("timestampFormat", "yyyy-MM-dd-HH.mm.ss.SSS")
.option("mode", "FAILFAST")
.schema(schema)
.load("src/test/resource/file/person_10h_timestamp.txt");
dataset.show();
-------------解决方法---------------------------------------------------------
通过测试,发现可以使用非常规方法实现想要的效果。
如下:
即使用格式为
.option("timestampFormat", "yyyy-MM-dd-HH.mm.ss.SSSFFF")
实现舍弃最后三位。
以下为测试的结果:
// 原始数据:2017-01-01-12.00.00.120189
// 使用yyyy-MM-dd-HH.mm.ss.SSS -> 2017-01-01 12:02:00.189 增加两分钟
// 使用yyyy-MM-dd-HH.mm.ss.SSSSSS -> 2017-01-01 12:02:00.189 增加两分钟
// 使用yyyy-MM-dd-HH.mm.ss.SSSFFF -> 2017-01-01 12:00:00.12 OK
// 使用yyyy-MM-dd-HH.mm.ss.SSSCCC -> 报错 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询