博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark:实现行转列
阅读量:6803 次
发布时间:2019-06-26

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

示例代码:

import static org.apache.spark.sql.functions.col;import static org.apache.spark.sql.functions.split;import static org.apache.spark.sql.functions.explode;import java.util.ArrayList;import java.util.List;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;public class TestSparkSqlSplit {    public static void main(String[] args){        SparkSession sparkSession =SparkSession.builder().appName("test").master("local[*]").getOrCreate();        List
items=new ArrayList
(); MyEntity myEntity=new MyEntity(); myEntity.setId("scene_id1,scene_name1;scene_id2,scene_name2|id1"); myEntity.setName("name"); myEntity.setFields("other"); items.add(myEntity); sparkSession.createDataFrame(items, MyEntity.class).createOrReplaceTempView("test"); Dataset
rows=sparkSession.sql("select * from test"); rows = rows.withColumn("id", explode(split(split(col("id"), "\\|").getItem(0), ";"))); rows=rows.withColumn("id1",split(rows.col("id"),",").getItem(0)) .withColumn("name1",split(rows.col("id"),",").getItem(1)); rows=rows.withColumn("id",rows.col("id1")) .withColumn("name",rows.col("name1")); rows=rows.drop("id1","name1"); rows.show(); sparkSession.stop(); }}

MyEntity.java

import java.io.Serializable;public class MyEntity implements Serializable{    private String id;    private String name;    private String fields;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getFields() {        return fields;    }    public void setFields(String fields) {        this.fields = fields;    }    }
View Code

打印结果:

18/12/05 17:28:53 INFO codegen.CodeGenerator: Code generated in 36.359731 ms+------+---------+-----------+|fields|       id|       name|+------+---------+-----------+| other|scene_id1|scene_name1|| other|scene_id2|scene_name2|+------+---------+-----------+

 

转载地址:http://mtjwl.baihongyu.com/

你可能感兴趣的文章
Android 关于ijkplayer
查看>>
LVS介绍与部署
查看>>
【Lolttery】项目开发日志 - (三)维护好一个项目好难
查看>>
数据库面试题
查看>>
C#的OpenFileDialog和SaveFileDialog的常见用法(转)
查看>>
(转)详解C#中的反射
查看>>
超简单将Centos的yum源更换为国内的阿里云源
查看>>
(转)返回顶部的js实现(jQuery/MooTools)
查看>>
十大最值得关注的国内大数据分析厂商
查看>>
Flask 学习 六 大型程序结构
查看>>
关于JavaScript的事件触发
查看>>
拓扑排序(topsort)
查看>>
助教学习总结
查看>>
VS中基于对话框的MFC利用换肤改变边框颜色及格式
查看>>
CSS3 Transitions
查看>>
[BZOJ1501/NOI2005]智慧珠游戏
查看>>
IO模型总结
查看>>
实战 Spring MVC接入支付宝即时到账 (部分代码)
查看>>
随想系列_5_乱七八糟
查看>>
PUTTY用密钥登陆服务器
查看>>