- 博客(66)
- 收藏
- 关注
原创 Spark缓存中的persist和cache方法
MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。cache:其实是persist方法的一种特殊情况,它等价于调用 persist(StorageLevel.MEMORY_ONLY),也就是将数据以非序列化的 Java 对象形式存储在内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。
2025-05-14 14:27:51
200
原创 分区器和默认分区器
1.MyPartitioner类继承自Partitioner,实现了numPartitions方法指定分区数量为 3 ,实现getPartition方法,根据球队名称判断分区索引,湖人对应分区 0,火箭对应分区 1,其他球队对应分区 2。假设分区数为 n,键为 key,则分区编号的计算公式为 hash(key) % n。2.在main方法中,创建包含球队信息的 RDD,然后调用partitionBy方法并传入自定义分区器MyPartitioner,对 RDD 进行分区,最后将分区后的数据保存到指定路径。
2025-05-14 14:27:41
229
原创 配置Hadoop集群环境-使用脚本命令实现集群文件同步
在一台机器上模拟出 Hadoop 分布式系统的各个组件,各个组件在逻辑上是分离的,但是都运行在同一台物理机器上,以此来模拟分布式环境。任务1:在hadoop102上,将hadoop101中/opt/module/hadoop-3.1.3目录拷贝到hadoop102上。任务2:在hadoop101上操作,将hadoop100中/opt/module目录下所有目录拷贝到hadoop102上。现在的目标是:要把hadoop100上的jdk文件夹拷贝到hadoop101中的相同的目录下。(1) 集群文件同步。
2025-05-14 14:27:26
380
原创 自定义分区
为了方便管理和查找,你会把这些书籍按照不同的类别,比如文学、历史、科学等,划分到不同的书架上。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。在 Spark 里,弹性分布式数据集(RDD)是核心的数据抽象,它是不可变的、可分区的、里面的元素并行计算的集合。
2025-05-13 11:13:44
332
原创 MySQL数据库
但代码世界的奇妙之处在于:当算法流淌在你的血液里,当创新成为你的本能反应,技术热情会自然引领你找到破局之道。在这条代码里面我们可以清楚的看见id='$id'可以用单引号+-- (注释)把原来要输出的内容进行破坏使前面查询的结果为空,在后面补上我们想要得到的东西,例如查询数据表的字段名、表名....笔者在前面的文章写了php的内容,现在我们就将php和MySQL联结起来,做一个动态的php的页面,如果只在php上面显示那么内容将是一个死值,互相结合能保证后端数据库在内容上的更新。
2025-05-13 11:10:00
226
原创 java高效实现爬虫
log.info("Chrome WebDriver配置了代理: {}", proxyHost + ":" + proxyPort);log.info("Chrome WebDriver配置了代理: {}", proxyHost + ":" + proxyPort);log.info("WebDriver配置了代理: {}", proxyHost + ":" + proxyPort);log.info("WebDriver配置了代理: {}", proxyHost + ":" + proxyPort);
2025-05-13 10:36:25
1833
原创 sparkSQL
或者将 Spark SQL 的查询结果作为输入,用于机器学习算法的训练和预测。可以将实时数据流存储到 Spark SQL 的表中,然后使用 SQL 进行实时查询和分析,以满足对实时数据的监控和决策需求。Spark SQL 与 Spark 的其他模块(如 Spark Core、Spark Streaming、MLlib、GraphX)紧密集成,可以在大规模数据处理和分析中发挥重要作用。同时,Spark SQL 提供了丰富的数据分析功能,如 SQL 查询、数据透视表、聚合函数等,可以满足各种数据分析需求。
2025-05-13 10:29:25
410
原创 MySQL数据库
在Ubuntu系统下安装好MySQL后,头文件在 /usr/include/mysql 路径下(/usr/include是系统搜索头文件的默认路径),库文件在 /usr/lib/x86_64-linux-gnu/ 路径下(系统链接库时默认的查找路径)。2,mysql_store_result函数存储结果集时,内部malloc了一片内存空间来存储查询过来的数据,执行完毕后,需要 void mysql_free_result(MYSQL_RES *result) 函数来释放资源。不同的命令可能有不同的状态。
2025-05-13 10:26:43
382
原创 sparkRDD知识汇总
在进行计算的时候,首先会查询BlockManager是否存在对应的Block信息,如果存在则直接返回,否则代表该RDD是需要计算的。如果缓存丢失或者没有缓存,则调用computeOrReadCheckpoint方法,该方法首先会判断该RDD是否存在检查点,如果存在检查点并且检查点数据已经具体化,那么该RDD的依赖就会变为对应的CheckpointRDD,而CheckpointRDD的compute实现中会调用readCheckpointFile方法,从本地或HDFS上读取Checkpoint数据。
2025-05-13 10:22:58
320
原创 spark知识
5.task:被送到executor上的工作单元,task 是执行job 的逻辑单元 ,task和job的区别在于:job是关于整个输入数据和面向整个集群(还没有分机器)的概念,task一般是处理输入数据的子集,并且和集群中的具体一台机器相联系。比如的RDD有100个分区,那么计算的时候就会生成100个task,你的资源配置为10个计算节点,每个两2个核,同一时刻可以并行的task数目为20,计算这个RDD就需要5个轮次。这就是在spark调优中,增大RDD分区数目,增大任务并行度的做法。
2025-05-13 10:21:28
272
原创 spark环境搭建和使用方法
-master:这个参数表示当前的pyspark要连接到哪个master,如果是local[*],就是使用本地模式启动pyspark,其中,中括号内的星号表示需要使用几个CPU核心(core),也就是启动几个线程模拟Spark集群。-rw-r--r-- 1 zhc zhc 1292 10月 29 2018 spark-defaults.conf.template。-rw-r--r-- 1 zhc zhc 1292 10月 29 2018 spark-defaults.conf.template。
2025-05-13 10:19:49
882
原创 MYSQL数据库和数据表的创建
汉卡对中文进行编码:GBK2312,GBK,GB18030,在中文编码规范下,只支持ASCII+中文,但是不能支持日文等,中文编码规范由2byte= 16bit,2^16=65536,UTF-8 除了ASCII码占 1byte ,其他的文字占 3byte=24bit=2^24=16777216。标识符不能是所用的RDBMS的保留字,如create,drop,insert,delete,update,alter,select,return,use,grant,revoke等。#查看目前系统中存在的数据库。
2025-05-13 10:14:43
344
原创 【无标题】
双击下载的mysql-installer-web-community-8.0.xx.msi。访问官网:https://dev.mysql.com/downloads/mysql/# 编辑/etc/mysql/mysql.conf.d/mysqld.cnf。# 编辑/etc/mysql/mysql.conf.d/mysqld.cnf。检查系统日志:/var/log/mysql/error.log(Linux)INSERT INTO users(name) VALUES('张三');
2025-05-13 10:12:26
672
原创 sparkSQL
HiveContext:HiveContext 是 SQLContext 的子集,增加了对 Hive 的集成支持,可以直接访问 Hive 中的数据和元数据,使用 Hive 的 UDF 和 UDAF。DataFrame 是特殊的 Dataset:DataFrame 是 Dataset 的一个特例,即 DataFrame = Dataset[Row]。数据抽象和操作方式的统一:DataFrame 和 Dataset 统一了 Spark SQL 的数据抽象和操作方式,提供了灵活且强大的数据处理能力。
2025-05-13 10:07:37
306
原创 spark缓存cache
1、依次启动hdfs(根路径下:start-all.sh)、zookeeper(根路径下:./zkmanager start)、spark-shell(spark的sbin路径下)其中job id中的5和4 的执行时间快慢做比较,4是在缓冲区执行所用的时间,5是没有在缓冲区所用的时间。cached.count是没有在缓冲区执行。lines.count是在缓冲区执行。5、观察spark的job执行时长。3、将读到的文件放入缓存。4、发出action。执行时内存大小会变化。
2025-05-13 09:14:41
100
原创 spark RDD基本介绍
基于RDDs 之间的依赖,RDDs 会形成一个有向无环图DAG,该DAG 描述了整个流式计算的流程,实际执行的时候,RDD 是通过血缘关系(Lineage)一气呵成的,即使出现数据分区丢失,也可以通过血缘关系重建分区,总结起来,基于RDD 的流式计算任务可描述为:从稳定的物理存储(如分布式文件系统)中加载记录,记录被传入由一组确定性操作构成的DAG,然后写回稳定存储。RDD 逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个compute函数得到每个分区的数据。
2025-05-13 09:09:03
347
原创 spark行动算子
行动算子是触发 Spark 计算的“触发点”,因为 Spark 的 RDD 是懒惰计算的,只有在执行行动算子时,才会真正开始计算。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。
2025-05-13 08:43:08
390
原创 spark转换算子
它的核心作用是对具有相同键的所有值进行聚合操作,通过用户提供的聚合函数将这些值合并成一个结果,从而实现数据的归约和统计。作用:对 RDD 中的每个元素应用给定的函数 f,将每个元素转换为另一个元素,最终返回一个新的 RDD。作用:筛选出 RDD 中满足函数 f 条件(即 f 函数返回 true)的元素,返回一个新的 RDD,新 RDD 中的元素类型与原 RDD 相同。作用:对 RDD 中的每个元素应用函数 f,函数 f 返回一个可遍历的集合,然后将这些集合中的元素扁平化合并成一个新的 RDD。
2025-05-13 08:40:48
362
原创 序列化流量统计
/1 遍历values,将其中的上行流量,下行流量分别累加。//3 抓取我们需要的数据:手机号,上行流量,下行流量。//3 关联Mapper和Reducer。//1 获取一行数据,转成字符串。//5 写出outK outV。//3 写出outK outV。//2 关联本Driver类。//1 获取job对象。//5 设置程序最终输出的KV类型。//4 设置Map端输出KV类型。//6 设置程序的输入输出路径。
2025-05-06 09:54:24
408
原创 Spark集群搭建-Standalone
切换到目录 /opt/module/spark-standalone/bin下,可以看到有一个spark-submit可执行文件,我们通过它来提交任务。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。
2025-05-06 09:53:04
257
原创 搭建speak yarn集群
4.配置 Hadoop:编辑 etc/hadoop/core-site.xml 和 etc/hadoop/hdfs-site.xml 文件,配置 HDFS 的相关参数。下载 Spark:从 Apache Spark 官方网站下载与你的 Hadoop 版本兼容的 Spark。2.解压并安装:将下载的 Hadoop 压缩包解压到指定目录,例如 /opt/hadoop。解压并安装:将下载的 Spark 压缩包解压到指定目录,例如 /opt/spark。Java 环境:确保安装了 JDK 1.8 或以上版本。
2025-05-06 09:52:00
375
原创 在 IntelliJ IDEA 中编写 Speak 程序
通过本文的介绍,你已经了解了如何在 IntelliJ IDEA 中编写一个简单的 Speak 程序,包括语音转文本和文本转语音的功能。一个常用的库是 Google Text-to-Speech API(文本转语音)和 Google Speech-to-Text API(语音转文本)。以下是一个简单的示例,展示如何使用 Google Text-to-Speech 和 Speech-to-Text API 实现语音交互功能。优化语音交互效果,例如调整语音的语速、音调或选择不同的语音类型。
2025-05-06 09:50:29
596
原创 在sheel中运行spark
在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。RDD的分区是RDD数据存储的最小单位。举个生活中的例子:高考的时候,每个班的同学都打散到不同的考场,此时的高3(8)班就是一个抽象的概念,在实际中,这个班级的学生可能分布在5个不同的考场。
2025-05-06 09:49:24
267
原创 spark基础知识,看这一篇就够了
Hadoop中的MR中每个map/reduce task都是一个java进程方式运行,好处在于进程之间是互相独立的,每个task独享进程资源,没有互相干扰,监控方便,但是问题在于task之间不方便共享数据,执行效率比较低。虽然Spark相对Hadoop而言有较大的优势,但Spark并不能完全代替Hadoop,Spark仅能做计算,而Hadoop生态圈不仅有计算(MapReduce),还有存储(HDFS)和资源管理调度(YARN)。而这也是整个Spark的核心数据结构,Spark整个平台都围绕着RDD进行。
2025-04-22 08:31:58
293
原创 spark数据清洗教程
在未来,我们可以期待Spark在数据清洗和预处理方面的进一步发展,例如支持更多的算法和特征工程,提供更高效的性能和更好的用户体验。在这个例子中,我们首先创建了一个数据集,然后使用fillna方法处理缺失值,接着使用StandardScaler和MinMaxScaler方法进行数据归一化和数据标准化,然后使用StandardScaler方法进行数据缩放,最后使用OneHotEncoder方法进行数据转换。在实际应用场景中,我们可以使用Spark进行数据清洗和预处理,以便于后续的数据分析和机器学习任务。
2025-04-02 16:03:19
805
原创 配置hosts
现在我们可以通过finalshell这个工具来连接我们的远程服务器,不过我们连接主机的时候,需要填入对方的ip地址,这个很麻烦。把虚拟机上的软件yum想象成你自己开的一家商场,那么yum的源就是你的供货商。hosts 文件是一个本地的文本文件,它的作用是将主机名映射到对应的 IP 地址,在 DNS(域名系统)解析之前,系统会先查询 hosts 文件来确定目标主机的 IP 地址。Yum是一个linux工具,用来从网络下载安装软件到linux操作系统中,在此之前,我们先要确保虚拟机的网络是通畅的。
2025-03-04 10:58:34
637
原创 VI编辑器常用命令
vi 是 Linux 系统中常用的文本编辑器,它有两种模式:命令模式(Command Mode)和插入模式(Insert Mode)。:%s/old/new/g:替换文件中所有的“old”为“new”。:%s/old/new/g:替换文件中所有的“old”为“new”。:%s/old/new:替换每行中的第一个“old”为“new”。:%s/old/new/g:在整个文件中替换文本。:g/old/p:打印包含“old”的所有行。:v/old/d:删除包含“old”的所有行。
2025-03-03 19:28:00
276
原创 VM虚拟机IP配置
linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。(2)配置Windows本地虚拟网卡,让本机也可以访问虚拟机。具体设置为:进入虚拟机,修改对应的IP。(3)设置虚拟机的IP。
2025-03-03 19:23:48
179
原创 Linux常用操作命令
/查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们。scp /opt/data.txt 192.168.1.101:/opt/ //将本地opt目录下的data文件发送到192.168.1.101服务器的opt目录下。mv /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录剪切到 /opt目录下面。cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面。
2025-02-25 08:52:55
170
原创 Scala函数的隐式参数
def sayName(implicit name:String="小明"):Unit={implicit val value:String="小马"println("我的名字是:"+name)sayName("小王")
2024-12-11 14:44:18
89
原创 正则表达式查找用户名4-12
object ghj { def main(args: Array[String]): Unit = { val name1="1admin" val name2="admin123" val name3="admin" val name4="ad_123Ab" val name5="admin123" val reg="[a-zA-Z_]\\w{5,11}".r println(reg.matches(name1)) println(
2024-12-09 14:55:58
327
原创 Scala循环代码
case 42=>println("湖北")case 11=>println("北京")case 31=>println("上海")case _=>println("其他")// println("湖北")// println("北京")// println("上海")
2024-12-02 15:25:40
196
原创 Scala关于身份证的代码
val zodiacs = Array("鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊","猴", "鸡", "狗", "猪")val zodiacIndex = (yearInt - 4) % 12 // 2008年是鼠年,所以用4(鼠年的索引)val birthday = id.substring(10,14) // 不包括终点下标 (起点下标,终点下标)println(s"身份证号${id}是不合法的")println(s"身份证号${id}是合法的")
2024-11-27 16:11:30
444
原创 根据身份证输出籍贯
case (x1,x2,x3,x4) => println("有四个元素")case (x1,x2,x3) => println("有三个元素")case "42" => println("湖北")case "33" => println("浙江")case "11" => println("北京")case "31" => println("上海")// println("湖北")// println("浙江")// println("未知")
2024-11-27 16:07:03
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人