sparkSQL行转列,列转行
【sparkSQL行转列,列转行】在用spark进行数据处理过程中,避免不了行转列和列传行的操作,特此记录:
1.列传行:这里举的例子是certificate_id,telephone_number 每个身份证号可能对应多个手机号码
df.createTempView("tmp")val result = sparkSession.sql(
"""
| select certificate_id,concat_ws(",",collect_set(telephone_num)) as
|telephone_num
|from tmp
|group by certificate_id
|""".stripMargin)
这里是把同一个身份证号对应的多条电话号码记录转为一条,电话号码用逗号分隔
2.行转列
//一条数据有多个电话号码转换成多行记录
val row2columnStr =
"""
|select * from temp_view
|lateral view explode(split(telephone_num, ',')) tmpTable as temp_view_new
""".stripMargin
这里是把telephone_num字段中有多个用逗号分隔的号码分割,转成多条记录
推荐阅读
- 【欢喜是你·三宅系列①】⑶
- 《格列佛游记》第二卷第五章概括
- 列出所有自定义的function和view
- Python基础|Python基础 - 练习1
- 你不可不知的真相系列之科学
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 2018-06-13金句系列7(金句结构-改编古现代诗词)
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 乡野村趣系列之烧仙草
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)