问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spark sql 怎样处理日期类型

发布网友 发布时间:2022-04-09 01:44

我来回答

1个回答

热心网友 时间:2022-04-09 03:13

json File 日期类型 怎样处理?怎样从字符型,转换为Date或DateTime类型?

json文件如下,有字符格式的日期类型

```
{ "name" : "Andy", "age" : 30, "time" :"2015-03-03T08:25:55.769Z"}
{ "name" : "Justin", "age" : 19, "time" : "2015-04-04T08:25:55.769Z" }
{ "name" : "pan", "age" : 49, "time" : "2015-05-05T08:25:55.769Z" }
{ "name" : "penny", "age" : 29, "time" : "2015-05-05T08:25:55.769Z" }
```
默认推测的Schema:
```
root
|-- _corrupt_record: string (nullable = true)
|-- age: long (nullable = true)
|-- name: string (nullable = true)
|-- time200: string (nullable = true)
```
测试代码
```
val fileName = "person.json"
val sc = SparkUtils.getScLocal("json file 测试")
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val jsonFile = sqlContext.read.json(fileName)
jsonFile.printSchema()
```
##解决方案

### 方案一、json数据 时间为 long 秒或毫秒
### 方案二、自定义schema
```
val fileName = "person.json"
val sc = SparkUtils.getScLocal("json file 测试")
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val schema: StructType = StructType(mutable.ArraySeq(
StructField("name", StringType, true),
StructField("age", StringType, true),
StructField("time", TimestampType, true)));
val jsonFile = sqlContext.read.schema(schema).json(fileName)
jsonFile.printSchema()
jsonFile.registerTempTable("person")
val now: Timestamp = new Timestamp(System.currentTimeMillis())

val teenagers = sqlContext.sql("SELECT * FROM person WHERE age >= 20 AND age <= 30 AND time <=‘" +now+"‘")
teenagers.foreach(println)
val dataFrame = sqlContext.sql("SELECT * FROM person WHERE age >= 20 AND age <= 30 AND time <=‘2015-03-03 16:25:55.769‘")
dataFrame.foreach(println)
```
###方案三、sql建表
创建表sql
```
CREATE TEMPORARY TABLE person IF NOT EXISTS
[(age: long ,name:string ,time:Timestamp)]
USING org.apache.spark.sql.json
OPTIONS ( path ‘person.json‘)
语法
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
   [(col-name data-type [, …])]
  USING [OPTIONS ...]
  [AS ]
```

### 方案四、用textfile convert
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 一练完金刚长寿功手心热是什么原因? 你好,当A和B开通亲情号时,A使用自己的余额宝付款,B会收到短信么 金刚长寿功女性来月经期间好练吗 用支付宝给亲情账户转账,自己会收到短信通知吗 八部金刚功对眼睛的好处 金刚长寿功可以治疗化疗过的宫颈癌吗 《金刚长寿功》不会练长寿功就不练了 每天只会练金刚功 好吗有什么身体影响吗 金刚长寿功的主要介绍 冬瓜表皮有点发霉的味道还可以吃吗 女人常练金刚长寿功有什么好处? 金刚长寿功的功法介绍 经常喝茶,杯子就就很多茶垢了··总是洗不干净··怎么可以清洗干净呀·· 我家人比较喜欢喝茶,听一些邻居说茶杯要经常洗干净,不然会影响健康,真的是这样吗? 喝茶之前如果不洗杯子有什么危害? 很多人是喜欢喝茶的,茶垢会对身体造成危害吗? 如何轻松去除茶垢? 为什么手机新浪微博点我的关注 现实的是“你关注的人也关注了他们”而不是显示我关注的人 今年东莞松山湖的桃花开了吗?去看的话要门票吗? 2011.2.12 松山湖桃花开了吗 东莞松山湖桃花开了吗?想计划2010-02-28去 3月8号东莞松山湖的桃花林还开花吗?我在东莞石龙镇,求路线,, 支付宝绑定的父母的银行卡,付款后他们会不会收到短信提示?用余额宝 支付宝转账给别人,自己会收到手机消息吗? ppt转换器( 转视频 )免费下载和使用 我下载了狸窝,结果要收费才能使用,有没有不用钱的软件啊 谁有免费得ppt格式转换器下载 亲情账户为对方存入余额宝 对方会不会有短信提醒?就是转账通知? 你好, 狸窝PPT转换器(已破解).rar,咋用呢,教教我吧 用支付宝给别人转账 成功后我的手机会收到短信提示么 如果用支付宝给其她人转账的话,会不会有信息通知那个人? 我下载了个狸窝ppt视频转换器是要注册收费的,请问谁有免费不用注册的好的ppt视频转换软件啊,想把ppt转换 支付宝余额转账给别人,自己会收到短信通知吗 狸窝ppt转换器破解版,不需联网终身免费使用,要就找我吧959883900 在线等狸窝ppt转换器破解免费版,就用一次,就给36块!!好黑!!!! 脸对紫外线过敏怎么办?能治好吗? 皮肤对紫外线过敏该怎么治疗 太阳晒的脸紫外线过敏怎么办??? 紫外线脸上过敏怎么办? 脸部紫外线过敏,还晒黑了怎么办 男人睡腻了你的表现 男人睡腻了不见他之后还会有新鲜感吗 情侣之间睡腻了怎么办