spark sql dataframe字符串类型的列拼接一个常量字符串的方法

spark示例数据://spark-2.3.0-bin-hadoop2.7//examples//src//main//resources//people.json数据内容:{“name”:“Michael”}{“name”:“Andy”, “age”:30}{“name”:“Justin”, “age”:19}创建dataframe:val sparksession = SparkS...
摘要由CSDN通过智能技术生成

spark示例数据://spark-2.3.0-bin-hadoop2.7//examples//src//main//resources//people.json
数据内容:
{“name”:“Michael”}
{“name”:“Andy”, “age”:30}
{“name”:“Justin”, “age”:19}
创建dataframe:
val sparksession = SparkSession.builder().master(“local”).appName("spark sql demo ").getOrCreate()
val df = sparksession.read.json(“C://Users//tanhaidi//Downloads//spark-2.3.0-bin-hadoop2.7//examples//src//main//resources//people.json”)
import sparksession.implicits._
相信大家看书或者看网上例子的时候,都会遇到下面这个语句(dollar符号打出来会出问题,这里贴上图片):
在这里插入图片描述
结果:
±------±--------+
| name|(age + 1)|
±------±--------+
|Michael| null|
| Andy| 31|
| Justin| 20|
±------±--------+
那我看到这的时候就会想,age字符是个int类型,可以直接加1,那name字段是个字符串类型,可以直接拼接一个字符串吗?
尝试着写了一下:
在这里插入图片描述
结果:
±-----------±—+
|(name + abc)| age|
±-----------±—+
| null|null|
| null| 30|
| null| 19|
±-----------±—+
都是空???这个肯定不是我们想看到的结果,我们想要的是名字后面加上“abc”这样的。
通过查资料,发现select方法有两个重构方法,一个方法的参数都是String,另一个方法的参数都是Column,那么我写的代码,相当于一个Column类型的字段加了一个字符串(“abc”),这样一定会有问题的。
这里就想,怎么能把"abc"从字符串转换成一个Column类型的列呢?通过查资料发现真有这么一个函数lit()!!!
用这个函数,貌似可以解决这个问题,代码:
在这里插入图片描述
结果:±------±---------------+
| name|concat(name, ab)|
±------±---------------+
|Michael| Michaelab|
| Andy| Andyab|
| Justin| Justinab|
±------±---------------+
附上全部代码(好多都注释了,学习用)

package com.bj58.spark

import org.apache.
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值