您现在的位置是:首页 > 文章详情

Spark之CASE...WHEN...THEN...的两种实现方式

日期:2017-10-31点击:709

在Spark中,dataframe是常用的数据格式,类似于数据库中的表。本文将介绍如何在dataframe中实现CASE…WHEN…THEN的两种方法。
一种是将dataframe看成数据库中的表,即使用createOrReplaceTempView()函数,之后利用数据库的CASE…WHTN…THEN进行操作。另一种方法是,利用pyspark.sql.functions的when().otherwise()函数。实例代码如下:

#载入包 from pyspark.sql import SparkSession from pyspark import SparkConf, SparkContext import 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() #创建dataframe df = 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的实现1 df = df.withColumn('mod_val_test1',F.when(df['rand'] <= 0.35,1).when(df['rand'] <= 0.7, 2).otherwise(3)) #CASE WHEN的实现2 df.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())

运行结果如下:
这里写图片描述



本次分享到此结束,欢迎大家交流与批评~~

原文链接:https://yq.aliyun.com/articles/615282
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章