![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
文章平均质量分 56
小蜜蜂爱编程
积跬步以致千里,积小流以成江海
展开
-
sparksql的shuffle分区数设置
在SparkSQL中当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partitions)为200,在实际项目中要合理的设置,特别是本地场景,一般支持不了200个分区。通常在集群中,也是设置和CPU核心一致,或者CPU的2倍以上。原创 2024-03-28 21:01:14 · 724 阅读 · 0 评论 -
spark提交代码到集群执行
改动1:加入环境变量,让pycharmi直接提交yn的时候,知道hadoop的配置在哪,可以去读取yarn的信息。如果在PyCharml中直接提交到yarn,依赖了其它的python文件,可以通过设置属性来指定依赖代码。#–py-files可以帮你指定你依赖的其它python代码,支持.zip(一堆),也可以单个.py文件。#如果在代码中运行,那么依赖的其它文件,可以通过spark.submit.pyFiles属性来设置。#在集群运行,本地文件就不可以用了,需要用hdfs文件。原创 2024-03-19 19:18:40 · 301 阅读 · 0 评论 -
内连接、左外连接、右外连接
这三种连接一般是sql相关的数据操作才有的概念。原创 2024-03-19 17:29:15 · 399 阅读 · 0 评论 -
SparkSQL异常数据清洗API
需要注意的是,如果我们结合thres和subset,意义并不是二者的叠加,而是在指定的subset中,列数要达到thres阈值,而不是任意的列数非空达到阈值和保存subset指定的列。param how:'any’or ‘all’,如果参数为any(默认any),那么只要df一行包含空值,就会被去除,如果是all,只会把一行都为空的去除。表示这一行的数据有效的(非空)的数据必须达到该参数设定的阈值,如果没达到,那么就删除该行数据。功能:对DF的数据进行去重,如果重复数据有多条,取第一条。原创 2024-03-28 21:31:19 · 591 阅读 · 0 评论 -
spark累加器
累加器的定义和应用场景很好理解,分布式场景下,我们希望对一个数进行全局性的累加,但由于我们的定义的普通全局变量,到各个分区只是一个副本,且不会影响driver处本身的全局变量值,在执行rdd计算的时候只是在各分区实现了自己的累加,并不能最终体现到driver定义的变量本身,因此spark引入了累加器,spark的累加器也是在各自的分区中累加,但在执行collect操作的时候会对各分区累加之和再做一次累加。原创 2024-03-26 09:30:34 · 346 阅读 · 0 评论 -
Spark 定义UDF函数
无论Hive还是SparkSQL分析处理数据时,往往需要使用函数,SparkSQL模块本身自带很多实现公共功能的函数,在pyspark.sql.functions中。SparkSQL与Hive一样支持定义函数:UDF和UDAF,尤其是UDF函数在实际项目中使用最为广泛。第一种:UDF(User-Defined-Function)函数。– 一对一的关系,输入一个值经过函数以后输出一个值;– 在Hive中继承UDF类,方法名称为evaluate,返回值不能为void,其实就是实现一个方法;原创 2024-04-01 09:25:04 · 1376 阅读 · 0 评论 -
spark on hive
由于spark不存在元数据管理模块,为了能方便地通过sql操作hdfs数据,我们可以通过借助hive的元数据管理模块实现。原创 2024-04-01 19:26:04 · 986 阅读 · 0 评论 -
spark广播变量
此外,实际上所有广播变量的方式,都可以用两个rdd之间的join操作来实现同样的结构,如上面将stu_info_list也定义成rdd,但这样会造成数据的一个shuffle,如下,通过id匹配的话会发生多次网络传输,因此我们在本地数据集比较小的时候,可以通过广播变量进行优化,但数据集大时,还是需要分布式操作来加速。原创 2024-03-25 23:52:31 · 542 阅读 · 0 评论 -
spark RDD 创建及相关算子
分布式集合对象上的api就是算子,本地集合的api叫方法或函数,spark中算子分两类:转换算子和行动算子,返回值仍为RDD的就是转换算子,这类算子是懒加载的,没有action 算子,transformation算子不工作,action算子就是一个启动开关,开启rdd的计算。func接收两个参数,这两个参数的类型要一致,返回他们聚合之后的值,类型也与参数类型一致,这里的类型一般是K-VRDD的value类型,下例按key分组,然后返回各分组内数据之和。另外,这个初始值聚合,会作用在分区内聚合和分区间聚合,原创 2024-03-20 09:49:26 · 799 阅读 · 0 评论 -
spark核心概念
一个阶段的内部都是窄依赖,窄依赖内,如果形成前后1:1的分区对应关系,就可以产生许多内存迭代计算的管道,这些内存迭代计算的管道,就是一个个具体的执行Task,一个Task是一个具体的线程,任务跑在一个线程内,就是走内存计算了,比如上面b1到p1的tupleRDD完全有一个线程负责,既没有网络交互,也没有线程间通信,就会最高效地完成数据b1的处理.spark并行度指示的是spark允许并行运行的task数,spark会根据并行的task数来设置分区数,一般来说,并行task数和分区数一一对应,原创 2024-03-28 20:00:34 · 942 阅读 · 0 评论 -
SparkSQL窗口函数
NTILE会为结果集分配指定大小的分区,将结果集尽可能平均分配到结果集上,并对每一行的结果标明分区编号,总行数不能整除指定分区大小时分区内数据数量可能有点差异,如下按score降序之后,进行分区。排序函数(列)OVER(选项),这里的选项可以是ORDER BY子句,也可以是OVER(PARTITION BY子句ORDER BY子句),但不可以。开窗用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进。开窗函数是将一行变成多行;原创 2024-04-01 11:20:57 · 556 阅读 · 0 评论 -
spark dataFrame数据写出
【代码】spark dataFrame数据写出。原创 2024-03-28 21:48:56 · 336 阅读 · 0 评论 -
RDD持久化
RDD的数据是基于内存迭代的过程数据,在迭代的过程中,新的RDD产生后,旧的RDD会被删除,而如果我们在生成一个RDD之后,用它生成了RDD1,后面的操作又想基于RDD生成RDD2,这时的RDD已经被删除了,系统会从头给我们构建RDD,最终再生成RDD2,但这样相当于前面生成RDD的过程要走一遍,会比较耗时,RDD缓存与持久化技术就是为了解决不再重新生成RDD问题的一种技术,collect之后,前面的rdd都不复存在。由于checkpoint不保留血缘关系,如果磁盘上的rdd丢失了,那么就无法恢复了。原创 2024-03-25 21:41:45 · 431 阅读 · 0 评论 -
spark core之RDD简介
RDD是resilient distributed dataset 弹性分布式数据集合,是spark中最基本的数据抽象,代表一个不可变、可分区、里面的数据可并行计算的集合。原创 2024-03-18 11:53:08 · 435 阅读 · 0 评论 -
sparksql执行流程
提交SparkSQL代码catalyst优化a.生成原始AST语法数b.标记AST元数据c.进行断言下推和列值裁剪以及其它方面的优化作用在AST上d.将最终AST得到,生成执行计划e.将执行计划翻译为RDD代码Driver执行环境入口构建(SparkSession)DAG调度器规划逻辑任务TASK调度区分配逻辑任务到具体Executor_上工作并监控管理任务Worker干活.原创 2024-04-01 12:12:49 · 997 阅读 · 0 评论 -
spark DataFrame通过JDBC读写数据库(MySQL示例)
读取JDBC是需要有驱动的,我们读取的是jdbc:mysql://这个协议,也就是读取的是mysql的数据,既然如此,就需要有mysql的驱动jar包给spark程序用.如果不给驱动jar包,会提示:No suitable Driver。将jar包放在:Anaconda3的安装路径下/envs/虚拟环境/lib/python.3.8/site-packages/pyspark/jars。非虚拟环境,自己装的就找到自己装的lib库地址,找到里面的site-packages/pyspark/jars路径。原创 2024-03-29 09:37:27 · 542 阅读 · 0 评论 -
spark sql执行引擎原理及配置
如果我们想要给上层开发人员配置好一个统一的sql开发界面,让他们统一通过sql开发即可,可通过spark中的thriftserver服务实现,与hive中的thriftserver类似,配置好该服务后,上层通过db client或者代码中通过jdbc连接即可直接使用sql操作,该服务会去请求metastore服务得到元数据后,再将sql语句及元数据给到执行引擎,转换成rdd代码执行。#master选择yarn,每一条sql都是在YARN集群中执行。#直接在root账户下启动即可。原创 2024-04-01 21:50:56 · 688 阅读 · 1 评论 -
sparksql的SQL风格编程
sql风格编程就是我们可以通过spark.sql来执行sql语句进行查询,这时的DataFrame就像是一张关系型数据表。返回的是DataFrame。# 注册临时表# 注册临时表,如果存在则替换# 注册全局表值得注意的是,全局表是可以跨sparksession对象使用的,在一个程序内,多个sparksession对象都可以使用,临时表只能在当前的sparksession中使用,全局表的查询需带上前缀global_temp.xxx将dataframe注册成表之后就可以用sql语句来查询了。原创 2024-03-17 18:38:47 · 508 阅读 · 0 评论 -
sparksql DSL编程风格
sparksql的DataFrame支持两种风格的编程开发,一种是DSL风格,一种是SQL风格,下面介绍几个常用api,sparksql的api还得常查其官方文档https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.select.html#pyspark.sql.DataFrame.select。原创 2024-03-17 18:17:27 · 666 阅读 · 0 评论 -
sparksession对象简介
spark2.0之后,sparksession对象是spark编码的统一入口对象,通常我们在rdd编程时,需要SparkContext对象作为RDD编程入口,但sparksession对象既可以作为RDD编程对象入口,在sparkcore编程中可以通过它来获取sparkcontext对象进行rdd编程,也可以直接作为sparksql编程入口对象。原创 2024-03-16 17:09:02 · 845 阅读 · 0 评论 -
sparksql读取外部数据
sparksql有统一的外部数据读取api。原创 2024-03-17 17:34:13 · 514 阅读 · 0 评论 -
pyspark基础 -- DataFrame的理解与案例
行列表结构描述在结构层面,pyspark中的StructType对象描述了表结构,StructField对象描述了表的一个列信息;在数据层面,Row对象记录了一行数据,Column对象记录了一列数据并包含列信息;原创 2024-03-17 10:02:47 · 747 阅读 · 0 评论 -
sparksql官方api文档
https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.html原创 2024-03-17 10:16:48 · 407 阅读 · 0 评论 -
sparksql简介
sparksql是一个用来处理结构话数据的spark模块,它允许开发者便捷地使用sql语句的方式来处理数据;它是用来处理大规模结构化数据的分布式计算引擎,其他分布式计算引擎比较火的还有hive,map-reduce方式。原创 2024-03-16 16:34:27 · 452 阅读 · 0 评论