Spark之CASE...WHEN...THEN...的两种实现方式
来源:互联网 发布:广州知行通航 编辑:程序博客网 时间:2024/06/06 19:29
在Spark中,dataframe是常用的数据格式,类似于数据库中的表。本文将介绍如何在dataframe中实现CASE…WHEN…THEN的两种方法。
一种是将dataframe看成数据库中的表,即使用createOrReplaceTempView()函数,之后利用数据库的CASE…WHTN…THEN进行操作。另一种方法是,利用pyspark.sql.functions的when().otherwise()函数。实例代码如下:
#载入包from pyspark.sql import SparkSessionfrom pyspark import SparkConf, SparkContextimport pyspark.sql.functions as F#spark初始化conf = SparkConf()APPNAME = 'spark_temporal_test'conf.set("spark.app.name", APPNAME)spark = SparkSession.builder.config(conf=conf).getOrCreate()#创建dataframedf = spark.createDataFrame([[1,'A'],[2,'B'],[3,'C'],[4,'C'],[5,'B'],[6,'A'],[7,'D'],\ [8,'A'],[9,'B'],[10,'C'],[11,'C'],[12,'B'],[13,'A'],[14,'D'],\ [15,'A'],[16,'B'],[17,'C'],[18,'C'],[19,'B'],[20,'']],['id','split'])df = df.withColumn('rand', F.rand(1))#CASE WHEN的实现1df = df.withColumn('mod_val_test1',F.when(df['rand'] <= 0.35,1).when(df['rand'] <= 0.7, 2).otherwise(3))#CASE WHEN的实现2df.createOrReplaceTempView("temp")df= spark.sql("""select *, case when rand <= %s then 1 when rand <= %s then 2 else 3 end as mod_val_test2 from temp"""%(0.35,0.7))#输出,查看结果print(df.show())
运行结果如下:
本次分享到此结束,欢迎大家交流与批评~~
阅读全文
0 0
- Spark之CASE...WHEN...THEN...的两种实现方式
- case when then的两种写法
- case when then 的两种写法
- SQL之 case when then
- SQL之CASE,WHEN,THEN
- SQL之CASE,WHEN,THEN
- mysql中case..when..then..else..end的两种用法介绍
- Case when ....then的用法
- case when then的用法
- case when then的用法
- CASE WHEN THEN的使用方法
- mysql case when then end使用方式
- sql学习之CASE WHEN THEN ELSE END的用法
- SQL查询之case when then的用法
- SQL之分情况的子查询 -- case when then
- SQL之case when then用法详解
- MySQL函数之CASE WHEN THEN
- SQL之case when then用法
- 结构经典例题,用上了typedef 再进行指针优化
- foreach循环中remove引起java.util.ConcurrentModificationException异常
- mysql 事务
- 2卷积神经网络相关API详解-2.1TensorFlow之卷积操作API
- es6<一>
- Spark之CASE...WHEN...THEN...的两种实现方式
- js日常
- 流程进度显示
- Android自定义控件5----继承View通讯录索引功能之3在按下或和移动时显示更新提示字母
- java基础知识(二 对象和类)
- 每天回顾linux命令(grep)
- 动态页面切换
- Qt多线程编程总结(一)(所有GUI对象都是线程不安全的)
- 基于Postman的API自动化测试