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 -> 报错
展开
 我来答
神衣莲丿1e
2018-10-17 · TA获得超过148个赞
知道答主
回答量:133
采纳率:62%
帮助的人:17.5万
展开全部
Spark SQL是支持在Spark中使用Sql、HiveSql、Scala中的关系型查询表达式。
它的核心组件是一个新增的RDD类型SchemaRDD,它把行对象用一个Schema来描述行里面的所有列的数据类型,它就像是关系型数据库里面的一张表。
它可以从原有的RDD创建,也可以是Parquet文件
最重要的是它可以支持用HiveQL从hive里面读取数据。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式