SPARK基础4(DataFrame操作)
admin
2023-08-16 05:02:11
0次

【SPARK基础4(DataFrame操作)】在上文《SPARK基础2(读入文件、转临时表、RDD与DataFrame)》中,我们简单介绍了spark中的DataFrame,我们知道了spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能。在本文中我们主要介绍,DataFrame基本API常用操作。
查看数据

// 默认只显示20条 commodityDF.show() // 是否最多只显示20个字符,默认为true commodityDF.show(false) // 完整查看10条数据 commodityDF.show(10, false) // 取前n行数据, 和take与head不同的是,limit方法不是Action操作。 commodityDF.limit(5).show(false)

加载数据到数组
// 将数据加载到集合里面 commodityDF.collect().foreach(println) // 和collect类似,只不过转换成list commodityDF.collectAsList()

获取指定字段的统计信息
// 获取指定字段的统计信息count, mean, stddev, min, max 返回的还是Dataframe commodityDF.describe("price", "yprice").show(false) // 遍历每个统计信息 commodityDF.describe("price", "yprice").collect().foreach(println) // 取0行的 "count" 数据 println(commodityDF.describe("price", "yprice").collect()(0))

去重
// 去除一行数据完全相同的 println(df.distinct().count()) // 删除指定字段存在相同的数据 println(df.dropDuplicates(Seq("price", "yprice")).count())

获取n行数据
// 获取第一行数据 println(commodityDF.first()) println(commodityDF.head()) // 获取前5条数据 commodityDF.head(5).foreach(println) commodityDF.take(5).foreach(println) // 以行数据list返回 commodityDF.takeAsList(5)

条件查询
// where和filter方法和SQL的where后面的语句一样 commodityDF.where("price>100 or yprice<200").show() commodityDF.filter("price>100 or yprice<200").show()

选取字段
// 选取 name ,price字段 commodityDF.select("name", "price").show(5, false) // 对price字段的数据都+100 commodityDF.select(commodityDF("name"), commodityDF("price") + 100).show(5) // 对指定字段进行特殊处理; price字段重名名为 p, 对price取四舍五入 commodityDF.selectExpr("name", "price as p", "round(price)").show(10) // 只获取单个字段 val name = commodityDF.col("name") val parice = commodityDF.apply("price")

删除指定字段
// 删除指定字段 price val c1 = commodityDF.drop("price") val c2 = c1.drop(c1("yprice")) c2.show(5)

排序
// 降序排序 commodityDF.orderBy(-commodityDF("price")).show(5) commodityDF.orderBy(commodityDF("price").desc).show(5) // 升序排序 commodityDF.orderBy("price").show(5) commodityDF.orderBy(commodityDF("price")).show(5) //多列排序 df.sort(df.age.desc(), df.name.asc()).show()

分组
// 对字段数据分组, 再对分组后的数据处理 count max mean sum agg commodityDF.groupBy("degree").count().show(5) commodityDF.groupBy(commodityDF("degree")).count().show(5) commodityDF.groupBy(commodityDF("degree")).max("price", "yprice").show(5)

agg聚合
// 聚合agg一般和group by一起使用 commodityDF.agg("price" -> "max", "yprice" -> "sum").show() // 对degree分组然后取 price字段的最大值和downNum的平均值 commodityDF.groupBy("degree").agg("price" -> "max", "downNum" -> "mean").show()

join
// 组合数据DF val df1 = commodityDF.limit(5) val df2 = commodityDF.limit(10) val df3 = commodityDF.filter("id>5 and id<11") // 只有id字段相同的才会横向组合 inner df1.join(df2, "id").show() df1.join(df2, df1("id") === df2("id")).show() df1.join(df2, df1("id") === df2("id"), "inner").show() // 根据 id和name两个字段join df2.join(df3, Seq("id", "name")).show()Leaddetails.join( Utm_Master, Leaddetails("LeadSource") <=> Utm_Master("LeadSource") && Leaddetails("Utm_Source") <=> Utm_Master("Utm_Source") && Leaddetails("Utm_Medium") <=> Utm_Master("Utm_Medium") && Leaddetails("Utm_Campaign") <=> Utm_Master("Utm_Campaign"), "left" )

重命名
// 重命名字段名,如果指定的字段名不存在,不进行任何操作 commodityDF.limit(5).show() commodityDF.withColumnRenamed("name", "reName").limit(5).show() df.select(df.name.alias("username"),df.age).show()

添加字段
// 往当前DataFrame中新增一列 commodityDF.withColumn("newCol", commodityDF("name")).show()

上一篇:冬日之霜

下一篇:梦归处

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...