自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (1)
  • 收藏
  • 关注

原创 go导包注意事项

go添加新的包后,需要执行go mod tidy,来更新依赖包。

2024-05-17 11:38:45 83

原创 go语言context

Context 是请求的上下文信息。对于RPC Server来说,一般每接收一个新的请求,会产生一个新的Context,在进行内部的函数调用的时候,通过传递Context,可以让不同的函数、协程保持相同的上下文信息,以达到数据传递、流程控制的目的。Context的数据以一种链表数据结构进行存储,如添加超时、取消、数据都会新在原来的Context的基础上派生出一个新的Context。不会对原来的Context修改。Context 有很多实现,没有一个标准规定Context应该是什么样的。

2024-04-17 11:16:46 330

原创 go语言net包里面的PostForm

/ 在客户端的请求,可能会被自动添加或重写Header中的特定的头,参见Request.Write方法。// 对启用了TLS的连接,本包的HTTP服务器会在调用处理器之前设置TLS字段,否则将设TLS为nil。// HTTP规定头域的键名(头名)是大小写敏感的,请求的解析器通过规范化头域的键名来实现这点。// Form是解析好的表单数据,包括URL字段的query参数和POST或PUT的表单数据。// Close在服务端指定是否在回复请求后关闭连接,在客户端指定是否在发送请求后关闭连接。

2024-04-17 10:52:49 541

原创 稀疏数组思想

2)思想:把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。1)记录数组一共有几行几列,有多少个不同的值。

2024-04-16 12:02:38 97

原创 go语言基础 -- 反射

反射可以在运行时动态获取变量的信息,如变量的类型(type),类别(kind)。如果是结构体变量,还可以获取到变量的字段、方法等结构体本身信息;通过反射,可以修改变量的值或调用关联的方法;使用反射需要import(“reflect”)我们前面的文章空接口接收任意类型的变量,通过typeof来判断变量类型。

2024-04-12 09:34:29 825 1

原创 一些mysql的基础

语法:SELECT …FROM 表1 AS别名1 (LEFT RIGHT) [OUTER] J0IN 表2 AS别名2 0N连接条件;需要注意的是,select字段中,非聚合结果字段必须在group by中出现,才能在前面select字段中出现。INSERT INTO表[(列1,列2,…,列N)]VALUES(值1,值2,…,值N)[,(值1,值2,FR0M表1 AS 别名1 [INNER] J0IN 表2 AS别名2 0N 连接条件;INNER是可以省略的,默认内关联,内关联是取两个表指定关联列交集。

2024-04-11 11:05:15 895

原创 hive 数据库表常用操作及相关函数讲解

上图中示例不管是创建还是加载,都是没有包含分区列的,但实际上我们的表中会包含分区的列,此外从数据加载到分区表中,partition (month=‘202006’)表示加载到指定分区202006中,而不是从数据内容中读取202006的数据,数据里面是没有month列的,一般有几个分区则hdfs对应的表路径下有几个文件夹。需要注意的是,如果是从hdfs加载而非本地,会直接将hdfs路径的文件移动到表指定的路径,源路径的数据会不再存在,另外overwrite字段表示以当前数据为准,以前的表中数据会被清除。

2024-04-10 22:05:54 834

原创 apache hive

用户sql通过用户接口给到sql解析器,hive从元数据管理中去获取sql从哪去查,查哪些字段,然后提交任务到yarn执行。后台执行脚本:nohup bin/hive–service hiveserver2>>logs/hiveserver2.log2>&1&bin/hive–service hiveserver2,启动的是HiveServer2服务。bin/hive-service metastore,启动的是元数据管理服务。·方式1:bin/hive即Hive的Shell客户端,可以直接写SQL。

2024-04-08 10:27:40 525

原创 hadoop streaming及hadoop官方文档

由于hadoop的map reduce框架计算性能已经比较老旧,有很多新的框架性能有很大提升,已经很少有基于相关api进行开发的项目,但hadoop streaming工具能帮助开发者兼容任何语言地运行自己的分布式程序,下面来简单介绍。

2024-04-07 18:20:54 327

原创 yarn集群部署

我们在配置好之后,可以一键启动yarn集群,然后可以打开http://node1:8088即可看到YARN集群的监控页面(ResourceManagerl的WEB UI)MapReduce和YARN的配置文件修改好后,需要分发到其它的服务器节点中。·SHADOOP_HOME/bin/yarn,此程序也可以用以单独控制所在机器的进程的启停。一键启动YARN集群:$HADOOP HOME/sbin/start-yarn.sh。分发完成配置文件,就可以启动YARN的相关进程啦。在当前机器,单独启动或停止进程。

2024-04-07 16:54:31 923

原创 hadoop分布式计算组件

计算:对数据进行处理,使用统计分析等手段得到需要的结果·分布式计算:多台服务器协同工作,共同完成一个计算任务。

2024-04-07 15:34:59 710

原创 HDFS文件存储

hdfs通过edits文件记录hdfs中每一次文件操作,及本次操作影响的文件及其对应的blocks,edits文件也会进行拆分避免单个文件太大,同时为了方便检索,可以对多个edits文件合并,合并后得到保存一系列操作后最终状态记录的文件FSImages,hdfs会定期对edits文件进行合并,如果不存在FSImages则生成,如果已存在,则会和已存在的FSImages再进行合并操作。2、文件存在统一的block块大小管理,默认是256MB,可修改,是hdfs存储的基本单位;

2024-04-07 14:31:56 631

原创 linux查看core文件保存位置

一般文件内容只有core的话,只会保存到运行环境目录,生成一个core.xxx的文件,可以自己配置core的文件名信息core%e%u…

2024-04-07 10:19:30 263

原创 利用hdfs gateway挂载NFS到本地

HDFS提供了基于NFS(Network File System)的插件,可以对外提供NFS网关,供其它系统挂载使用。我们通过NFS网关可以将hdfs文件系统挂在为网络磁盘的形式,这样就可以像操作本地磁盘一样操作上面的数据。第一个配置项表示允许hadoop用户代理任何其他用户组,第二个标识允许代理服务器的请求。2.在hdfs-site.xml中新增如下项。·上传、下载、删除、追加内容。

2024-04-07 09:19:51 520

原创 hadoop基础介绍

将所有给定本地文件内容追加到远程文件末尾,src_path是本地文件,dest_path市远程文件,如果dest文件不存在,则创建该文件,若本地文件为-,则为从标准输入中读入。hdfs文件系统也是以/作为根目录来描述hdfs,hdfs的命令参数一般都带文件路径操作,那么如何区分linux本地文件和hdfs上的文件?这里的src_path是远程hdfs文件系统上的路径,dest_path是本地路径,标识要从远程下载到本地,-f也是强制覆盖,-p也是保留权限、访问和修改时间信息。

2024-04-06 16:33:11 743

原创 spark3.x新特性

此优化可以在一定程度上避免由于缺少统计信息或着错误估计大小(当然也可能两种情况同时存在),而导致执行计划性能不佳的情况,比如某个join操作中其中一个数据集很小,通过网络io的shuffle次数会比较多。在AQE从shuffle文件统计信息中检测到任何倾斜后,它可以将倾斜的分区分割成更小的分区,并将它们与另一侧的相应分区连接起来。A0分组的数据量比较大,会动态给它拆分,达到各分组数据集大小平衡。用户可以在开始时设置相对较多的shuffle分区数,AQE会在运行时将相邻的小分区合并为较大的分区。

2024-04-02 19:34:14 603

原创 spark shuffle 补充概念

2.SortShuffle主要是对磁盘文件进行合并来进行文件数量的减少,同时两类Shuffle都需要经过内存缓冲区溢写磁盘的场景.所以可以得知,尽管Spark是内存迭代计算框架,但是内存迭代主要在窄依赖中.在宽依赖(Shuffle)中磁盘交互还是一个无可避免的情况.在Shuffle过程中.提供数据的称之为Map端(Shuffle Write)接收数据的称之为Reduce端(Shuffle Read),在Spark的两个阶段中,总是前一个阶段产生一批Map提供数据,下一阶段产生一批Reduce接收数据。

2024-04-02 17:33:09 679

原创 spark 编程案例

以下案例结合了spark sql、dataframe、udf、读写文件等操作。

2024-04-02 16:46:02 383

原创 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 670 1

原创 spark on hive

由于spark不存在元数据管理模块,为了能方便地通过sql操作hdfs数据,我们可以通过借助hive的元数据管理模块实现。

2024-04-01 19:26:04 968

原创 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 939

原创 SparkSQL窗口函数

NTILE会为结果集分配指定大小的分区,将结果集尽可能平均分配到结果集上,并对每一行的结果标明分区编号,总行数不能整除指定分区大小时分区内数据数量可能有点差异,如下按score降序之后,进行分区。排序函数(列)OVER(选项),这里的选项可以是ORDER BY子句,也可以是OVER(PARTITION BY子句ORDER BY子句),但不可以。开窗用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进。开窗函数是将一行变成多行;

2024-04-01 11:20:57 466

原创 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 1098

原创 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 341

原创 spark dataFrame数据写出

【代码】spark dataFrame数据写出。

2024-03-28 21:48:56 316

原创 SparkSQL异常数据清洗API

需要注意的是,如果我们结合thres和subset,意义并不是二者的叠加,而是在指定的subset中,列数要达到thres阈值,而不是任意的列数非空达到阈值和保存subset指定的列。param how:'any’or ‘all’,如果参数为any(默认any),那么只要df一行包含空值,就会被去除,如果是all,只会把一行都为空的去除。表示这一行的数据有效的(非空)的数据必须达到该参数设定的阈值,如果没达到,那么就删除该行数据。功能:对DF的数据进行去重,如果重复数据有多条,取第一条。

2024-03-28 21:31:19 553

原创 sparksql的shuffle分区数设置

在SparkSQL中当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partitions)为200,在实际项目中要合理的设置,特别是本地场景,一般支持不了200个分区。通常在集群中,也是设置和CPU核心一致,或者CPU的2倍以上。

2024-03-28 21:01:14 458

原创 spark核心概念

一个阶段的内部都是窄依赖,窄依赖内,如果形成前后1:1的分区对应关系,就可以产生许多内存迭代计算的管道,这些内存迭代计算的管道,就是一个个具体的执行Task,一个Task是一个具体的线程,任务跑在一个线程内,就是走内存计算了,比如上面b1到p1的tupleRDD完全有一个线程负责,既没有网络交互,也没有线程间通信,就会最高效地完成数据b1的处理.spark并行度指示的是spark允许并行运行的task数,spark会根据并行的task数来设置分区数,一般来说,并行task数和分区数一一对应,

2024-03-28 20:00:34 918

原创 spark累加器

累加器的定义和应用场景很好理解,分布式场景下,我们希望对一个数进行全局性的累加,但由于我们的定义的普通全局变量,到各个分区只是一个副本,且不会影响driver处本身的全局变量值,在执行rdd计算的时候只是在各分区实现了自己的累加,并不能最终体现到driver定义的变量本身,因此spark引入了累加器,spark的累加器也是在各自的分区中累加,但在执行collect操作的时候会对各分区累加之和再做一次累加。

2024-03-26 09:30:34 340

原创 spark广播变量

此外,实际上所有广播变量的方式,都可以用两个rdd之间的join操作来实现同样的结构,如上面将stu_info_list也定义成rdd,但这样会造成数据的一个shuffle,如下,通过id匹配的话会发生多次网络传输,因此我们在本地数据集比较小的时候,可以通过广播变量进行优化,但数据集大时,还是需要分布式操作来加速。

2024-03-25 23:52:31 530

原创 RDD持久化

RDD的数据是基于内存迭代的过程数据,在迭代的过程中,新的RDD产生后,旧的RDD会被删除,而如果我们在生成一个RDD之后,用它生成了RDD1,后面的操作又想基于RDD生成RDD2,这时的RDD已经被删除了,系统会从头给我们构建RDD,最终再生成RDD2,但这样相当于前面生成RDD的过程要走一遍,会比较耗时,RDD缓存与持久化技术就是为了解决不再重新生成RDD问题的一种技术,collect之后,前面的rdd都不复存在。由于checkpoint不保留血缘关系,如果磁盘上的rdd丢失了,那么就无法恢复了。

2024-03-25 21:41:45 421

原创 spark RDD 创建及相关算子

分布式集合对象上的api就是算子,本地集合的api叫方法或函数,spark中算子分两类:转换算子和行动算子,返回值仍为RDD的就是转换算子,这类算子是懒加载的,没有action 算子,transformation算子不工作,action算子就是一个启动开关,开启rdd的计算。func接收两个参数,这两个参数的类型要一致,返回他们聚合之后的值,类型也与参数类型一致,这里的类型一般是K-VRDD的value类型,下例按key分组,然后返回各分组内数据之和。另外,这个初始值聚合,会作用在分区内聚合和分区间聚合,

2024-03-20 09:49:26 784

原创 spark提交代码到集群执行

改动1:加入环境变量,让pycharmi直接提交yn的时候,知道hadoop的配置在哪,可以去读取yarn的信息。如果在PyCharml中直接提交到yarn,依赖了其它的python文件,可以通过设置属性来指定依赖代码。#–py-files可以帮你指定你依赖的其它python代码,支持.zip(一堆),也可以单个.py文件。#如果在代码中运行,那么依赖的其它文件,可以通过spark.submit.pyFiles属性来设置。#在集群运行,本地文件就不可以用了,需要用hdfs文件。

2024-03-19 19:18:40 229

原创 内连接、左外连接、右外连接

这三种连接一般是sql相关的数据操作才有的概念。

2024-03-19 17:29:15 388

原创 spark core之RDD简介

RDD是resilient distributed dataset 弹性分布式数据集合,是spark中最基本的数据抽象,代表一个不可变、可分区、里面的数据可并行计算的集合。

2024-03-18 11:53:08 429

原创 sparksql的SQL风格编程

sql风格编程就是我们可以通过spark.sql来执行sql语句进行查询,这时的DataFrame就像是一张关系型数据表。返回的是DataFrame。# 注册临时表# 注册临时表,如果存在则替换# 注册全局表值得注意的是,全局表是可以跨sparksession对象使用的,在一个程序内,多个sparksession对象都可以使用,临时表只能在当前的sparksession中使用,全局表的查询需带上前缀global_temp.xxx将dataframe注册成表之后就可以用sql语句来查询了。

2024-03-17 18:38:47 484

原创 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 543

原创 sparksql读取外部数据

sparksql有统一的外部数据读取api。

2024-03-17 17:34:13 508

原创 sparksql官方api文档

https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.html

2024-03-17 10:16:48 361

原创 pyspark基础 -- DataFrame的理解与案例

行列表结构描述在结构层面,pyspark中的StructType对象描述了表结构,StructField对象描述了表的一个列信息;在数据层面,Row对象记录了一行数据,Column对象记录了一列数据并包含列信息;

2024-03-17 10:02:47 698

protobuf中文学习文档

protobuf中文学习文档

2023-11-18

C语言实现的高可复用线程池

通用线程池实现

2020-12-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除