scala – 在现有列的DataFrame中添加新列
发布时间:2020-12-16 09:27:36 所属栏目:安全 来源:网络整理
导读:我有一个带有datetime列的csv文件:“2011-05-02T04:52:09 00:00”. 我正在使用scala,文件被加载到spark DataFrame中,我可以使用jodas时间来解析日期: val sqlContext = new SQLContext(sc)import sqlContext.implicits._val df = new SQLContext(sc).loa
我有一个带有datetime列的csv文件:“2011-05-02T04:52:09 00:00”.
我正在使用scala,文件被加载到spark DataFrame中,我可以使用jodas时间来解析日期: val sqlContext = new SQLContext(sc) import sqlContext.implicits._ val df = new SQLContext(sc).load("com.databricks.spark.csv",Map("path" -> "data.csv","header" -> "true")) val d = org.joda.time.format.DateTimeFormat.forPattern("yyyy-mm-dd'T'kk:mm:ssZ") 我想基于datetime字段创建新列以进行时间序列分析. 在DataFrame中,如何根据另一列的值创建列? 我注意到DataFrame有以下功能:df.withColumn(“dt”,column),有没有办法根据现有列的值创建一个列? 谢谢 解决方法import org.apache.spark.sql.types.DateType import org.apache.spark.sql.functions._ import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat val d = DateTimeFormat.forPattern("yyyy-mm-dd'T'kk:mm:ssZ") val dtFunc: (String => Date) = (arg1: String) => DateTime.parse(arg1,d).toDate val x = df.withColumn("dt",callUDF(dtFunc,DateType,col("dt_string"))) callUDF,col作为导入节目包含在函数中 col(“dt_string”)中的dt_string是您要转换的df的原始列名. 或者,您可以将最后一个语句替换为: val dtFunc2 = udf(dtFunc) val x = df.withColumn("dt",dtFunc2(col("dt_string"))) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 如何使用ng-polymer-elements,angularjs和requir
- docker-compose v3:使用顶级卷语法在多个容器之
- 每天一个vim命令(更新中)
- angularjs – Angular:ng-click,参数不起作用
- Calling WebServices using Javascript
- unix – .ssh目录未创建
- Angular2表单ControlGroup,其中包含未定义的Cont
- bash – 如何从/ etc / inittab启动linux shell
- twitter-bootstrap – 在jsFiddle中使用twitter的
- vm boot2docker中更新虚拟机的时间
热点阅读