生产环境_Apache Spark技术大牛的实践:使用DataFrame API计算唯一值数量并展示技术(属性报告)

news2024/12/29 10:52:05

业务背景

        给前端提供算法集成好的数据,对算法处理后的数据进行进一步删选展示

        可以使用下面代码运行一下看看结果,听有趣的,我写的代码中计算了不同字段的值的数量,并生成了一个显示字符串来描述这些数据的分布情况然后使用"details"列限制显示的行数,以便更方便地查看和分析数据,其实是生产环境中的应用,为了不涉及敏感信息,进行了数据和字段的脱敏处理。

样例数据

北京,001,23,2.123,中国,12121
北京,001,24,34.2,中国,12121
南京,002,32,23.12,中国1,12312
南京,002,31,23.44,中国1,12312

样例实现内容具体如下   

 #展示的话
"本学校鸟类飞行夜间活动区域分布为xx个鸟,分别布在cc个区域"
 # eg:xx代表统计后的鸟类个数,cc标识统计后的区域个数

代码实现:

import org.apache.spark.sql.functions.lit
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{StringType, StructField, StructType}



object bg {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Parent_child_v3").setMaster("local[1]")
    val sc = new SparkContext(conf)
    val spark = SparkSession.builder.appName("Parent_child_v3").getOrCreate()

    import spark.implicits._

    val df1 = sc.textFile("C:\\zzcode\\workplace\\src\\main\\data\\jd_Data")

    val schema = StructType(
      Array(
        StructField("区域名称", StringType, nullable = true),
        StructField("区域编号", StringType, nullable = true),
        StructField("bird", StringType, nullable = true),
        StructField("score", StringType, nullable = true) ,
        StructField("国家", StringType, nullable = true),
        StructField("区域顶点集", StringType, nullable = true)
      )
    )

    val rowRDD = df1.map(line => {
      val parts = line.split(",")
      Row(parts(0), parts(1), parts(2), parts(3),parts(4),parts(5))
    })

    val df = spark.createDataFrame(rowRDD, schema)
    df.show(false)
    //+--------+--------+---+-----+-----+----------+
    //|区域名称|区域编号|bird |score|国家 |区域顶点集|
    //+--------+--------+---+-----+-----+----------+
    //|北京    |001     |23 |2.123|中国 |12121     |
    //|北京    |001     |24 |34.2 |中国 |12121     |
    //|南京    |002     |32 |23.12|中国1|12312     |
    //|南京    |002     |31 |23.44|中国1|12312     |
    //+--------+--------+---+-----+-----+----------+

    val birdCount = df.select("bird").distinct().count()
    val regionNameCount = df.select("区域名称").distinct().count()
//
    val displayString = "本学校学生区域分布为" + birdCount + "个bird,分布在" + regionNameCount + "个区域名称"
    println(displayString)

  //
  val updatedDataFrame = df.withColumn("details", lit(displayString))
    updatedDataFrame.show(false)
    val detailsRow = updatedDataFrame.select("details").limit(1)
    detailsRow.show(false)
  }
}
//2023_12_by_Matrix70
//作者:https://blog.csdn.net/qq_52128187?type=blog,如若转载,请注明出处

代码运行结果截图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1315390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Druid-spring-boot-starter源码阅读-其余组件自动装配

前面我们看完了整个DruidDataSource初始化流程,但是其实Druid除了最核心的数据源之外,还有其他需要自动配置的,细心的人可能看到了,就是利用Import注解导入的四个类。 DruidFilterConfiguration public class DruidFilterConfigu…

【Leetcode】相同的树、对称二叉树、另一颗树的子树

相同的树 思路: 这个题目实际上可以分解为许多个相同的子问题,就是检查每一个子树是否相同,然后便可以利用递归的思想来解答。 代码: bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(pNULL&&qNULL)return…

C++核心编程思路(1):①程序的内存模型②引用的作用

文章目录 前言一、不同的存储类型变量,会被存储在什么区?①const修饰的局部变量放在栈区,全局变量放在只读数据区。②static修饰的全局和局部变量都放在静态区(即数据区中的一个小区) 二、栈区1.如果在函数A中定义了一…

漏洞复现-网神SecGate3600防火墙敏感信息泄露漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

Axure之动态面板轮播图

目录 一.介绍 二.好处 三.动态面板轮播图 四.动态面板多方式登录 五.ERP登录 六.ERP的左侧菜单栏 七.ERP的公告栏 今天就到这了哦!!!希望能帮到你了哦!!! 一.介绍 Axure中的动态面板是一个非常有用的组…

Mr. Cappuccino的第65杯咖啡——MacOS安装Docker

MacOS安装Docker 下载Docker安装Docker查看Docker相关信息镜像加速 下载Docker Docker官网 Docker文档中心 Docker桌面版下载地址 安装Docker 查看Docker相关信息 docker --versiondocker info镜像加速 阿里云镜像加速器 "registry-mirrors": ["https://gq8…

Flink-水位线和时间语义

Flink中的时间含义 在实际应用中,事件时间语义会更为常见。一般情况下,业务日志数据中都会记录数据生成的时间戳(timestamp),它就可以作为事件时间的判断基础。 在Flink中,由于处理时间比较简单&#xff0c…

4G无线工业级路由器在智能制造设备互联互通中的角色

随着工业技术的不断发展和进步,智能制造已经成为了现代制造业的重要趋势和发展方向。而在智能制造过程中,设备之间的互联互通是至关重要的一环。在这个过程中,4G无线工业级路由器扮演着重要的角色,它提供了稳定可靠的网络连接&…

Linux——进程中被打开的文件

C语言中有着许多对文件操作的函数,包括其他语言也有,但是从语言来了解文件有点浅显计算机的一切都离不开操作系统,那么文件跟操作系统也有着密切的关系,所以我们从系统层面来了解文件(在进程中打开的文件)文…

轻量封装WebGPU渲染系统示例<49>- 多种灯光多材质(源码)

实现方式: 1. 全局的灯光和阴影。 2. 球体和矩形平面使用了相同的材质对象。 3. 通过材质自动关联和组装对应的渲染材质功能节点。 4. 共享uniform或storage的buffer对象。 5. 共享shader module对象。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/b…

优先考虑类型安全的异构容器

在Java中,异构容器是一种可以存储不同类型元素的容器。为了提高类型安全性,可以使用泛型和类型安全的异构容器,而不是传统的非类型安全容器。下面是一个例子,演示如何使用类型安全的异构容器 import java.util.HashMap; import j…

关于MySQL的bigint问题

MySQL的bigint(8)能存多大数值? MySQL的BIGINT(8)可以存储的数值范围是从-9,223,372,036,854,775,808到9,223,372,036,854,775,807。这是因为BIGINT数据类型在MySQL中使用8字节进行存储,每个字节有8位,所以总共可以表示2^64个不同的整数。 …

INFINI Labs 产品更新 | Easysearch 新增快照搜索功能,Console 支持 OpenSearch 存储

INFINI Labs 产品又更新啦~,包括 Easysearch v1.7.0、Console v1.13.0。本次各产品更新了 Easysearch 快照搜索功能;Console 支持 OpenSearch 集群存储系统数据、优化了初始化安装向导流程等。 以下是本次更新的详细说明。 INFINI Easysearch v1.7.0 …

Linux---查看文件内容命令

1. 查看文件内容命令的使用 命令说明cat查看小型文件more分屏查看大型文件 cat命令的效果图 说明: cat命令结合重定向可以完成多个文件的合并gedit 文件编辑命令,可以查看和编辑文件 more命令的效果图 当查看内容信息过长无法在一屏上显示时,可以使…

Unity中实现ShaderToy卡通火(移植篇)

文章目录 前言一、准备好我们的后处理基础脚本1、C#:2、Shader: 二、开始逐语句对ShaderToy进行转化1、首先,找到我们的主函数 mainImage2、其余的方法全部都是在 mainImage 函数中调用的方法3、替换后的代码(已经没报错了,但是效…

Centos7 配置Git

随笔记录 目录 1, 新建用户 2. 给用户设置密码相关操作 3. 为新用户添加sudo 权限 4. 配置Git 4.1 配置Git 4.2 查看id_ras.pub 5, 登录Git 配置SSH 秘钥 6. Centos7 登录Git 7. clone 指定branch到本地 8. 将新代码复制到指定路径 9. 上传指定代码 …

基于ssm电影网站源码和论文

随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。它将是直接管理电影网站的最新形式。本论文是以构建电影网站为目标,使用 java技术制作,由管理员和用户两大部分组成。…

GEM5 McPAT NoC教程: xml设置汇总-2023版

简介 McPAT的xml有一些参数需要设置,noc的部分很多Gem5ToMcpatparser没有设置,也没有给出如何设置的条件。尤其是和活动相关的total access,不知道具体怎么设置,也不知道如何从gem5 stats.txt中导出。本文提供了2023年的收集到ge…

【强化学习-读书笔记】表格型问题的 Model-Free 方法

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto无模型方法 在前面的文章中,我们介绍的是有模型方法(Model-Based)。在强化学习中,"Model"可以理解为算法…

【CSS】前端点点点加载小点样式css动画过程实现

对话的 ... 加载动画&#xff0c;直接用 CSS 就可以实现&#xff0c;样式可以自己改&#xff0c;逻辑大差不差 <div class"loading-text"><span class"dot1"></span><span class"dot2"></span><span class&quo…