博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spark使用udf给dataFrame新增列
阅读量:4679 次
发布时间:2019-06-09

本文共 1363 字,大约阅读时间需要 4 分钟。

在spark中给DataFrame新增一例的方法,通常都是使用withColumn,但是withColumn只能在

将原有的列换个名字增加,不能增加自定义的一列,比如增加个id,增加个时间

// 新建一个dataFrameval sparkconf = new SparkConf()  .setMaster("local")  .setAppName("test")val spark = SparkSession.builder().config(sparkconf).getOrCreate()val tempDataFrame = spark.createDataFrame(Seq(  (1, "asf"),  (2, "2143"),  (3, "rfds"))).toDF("id", "content")// 增加一列val addColDataframe = tempDataFrame.withColumn("col", tempDataFrame("id")*0)addColDataframe.show(10,false)

打印结果

+---+-------+---+|id |content|col|+---+-------+---+|1  |asf    |0  ||2  |2143   |0  ||3  |rfds   |0  |+---+-------+---+

但是,这并不满足需求,所以可以用udf写自定义函数新增列

import org.apache.spark.sql.functions.udf// 新建一个dataFrameval sparkconf = new SparkConf()  .setMaster("local")  .setAppName("test")val spark = SparkSession.builder().config(sparkconf).getOrCreate()val tempDataFrame = spark.createDataFrame(Seq(  ("a, "asf"),  ("b, "2143"),  ("c, "rfds"))).toDF("id", "content")// 自定义udf的函数val code = (arg: String) => {      if (arg.getClass.getName == "java.lang.String") 1 else 0    }val addCol = udf(code)// 增加一列val addColDataframe = tempDataFrame.withColumn("col", addCol(tempDataFrame("id")))addColDataframe.show(10, false)

结果

+---+-------+---+|id |content|col|+---+-------+---+|a  |asf    |1  ||b  |2143   |1  ||c  |rfds   |1  |+---+-------+---+

 

转载于:https://www.cnblogs.com/xiaolin93/p/7736784.html

你可能感兴趣的文章
C++静态计算的例子
查看>>
再谈记忆化搜索 HDU-1078
查看>>
在Node中使用ES6语法
查看>>
2015年秋面试心得汇总
查看>>
海外开发者推荐:10个顶级2D游戏资源站
查看>>
redis 在 php 中的应用(Hash篇)
查看>>
2018新年 flag 了解一下(每月初更新...)
查看>>
软件工程概论个人作业02
查看>>
《SSAO》
查看>>
基于.NET平台常用的框架整理(转)
查看>>
the simulation codes of network resource pre-allocation
查看>>
java远程调试
查看>>
SQLite header and source version mismatch 解决方案
查看>>
算法 binary search
查看>>
cocos2d_android 第一个游戏
查看>>
【python小练】0000
查看>>
改变EasyUI默认分页显示数目
查看>>
Maven开始
查看>>
在sublime中的markdown的简单使用整理
查看>>
简单反爬虫技术介绍
查看>>