- 博客(62)
- 收藏
- 关注
原创 数据清洗-案例
代码说明:NullWritable就等价于null,context.write(value,NullWritable.get())就表示只有key,没有value。原文链接:https://blog.csdn.net/2401_87076736/article/details/147925073。在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。// 1. 获取一行数据,使用空格进行拆分,判断是否有8个字段。// 2 加载jar包。
2025-05-18 19:43:09
425
原创 MapReduce打包运行
我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。在上面的代码中,我们的程序只能完成固定目录下的功能。使用finalshell上到任意节点,例如hadoop100上的/opt下,。确保集群中有/wcinput目录,并且下面有记事本文件中的单词。修改代码,让程序能指定要执行的输入目录和要保存结果的输出目录。修改driver类的代码,更新输入和输入路径。
2025-05-18 19:41:17
459
原创 分区器和序列化
说明:这里的setNumReduceTasks的值最好与setPartitioner返回的分区器的个数一致。回顾我们的需求,我们在做词频统计的时候,把a-m开头的保存在一个文件中,n-z开头的保存在另一个文件中。下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。这个泛型类的泛型是map方法输出的k2,v2的数据类型。// 2. 使用ObjectInputStream对象中的readObject方法,读取文件中的对象。
2025-05-18 19:34:29
300
原创 SparkSQL-数据提取和保存
从csv中读入数据到DataFrame。这里用到的方法是read.csv()(2)通过systemctl start mysqld 命令来启动服务。(3)通过mysql -uroot -p 来登录mysql。(1)打开finalshell,连接hadoop100。(4)通过create table来创建数据表。
2025-05-18 19:29:17
228
原创 sparkSQL读入csv文件写入mysql(4)
核心方法:dataFrame.write.mode("append").jdbc()。上面的代码运行完成之后,切换到finalshell中的mysql端,查看效果。
2025-05-18 19:22:32
130
原创 sparkSQL读入csv文件写入mysql(3)
请注意,这里并没没有单独添加spark_core的依赖,因为在spark-sql中已经包含了spark_core。(1)scala-library 是 Scala 语言的基础库,是编写 Scala 程序的必要条件。(2)spark-sql_2.12 提供了 Spark SQL 的功能,用于高效的数据处理和分析。(3)mysql-connector-java 提供了与 MySQL 数据库交互的能力。使用spark.read.jbdc方法,连接数据库。1.新建项目,或者使用之前的项目也可以。
2025-05-18 19:21:21
217
原创 sparkSQL读入csv文件写入mysql(2)
接下来,我们去创建一个新的数据库,数据表,并插入一条数据。提醒:use spark;的作用是使用当前数据库;
2025-05-18 19:17:59
262
原创 sparkSQL读入csv文件写入mysql
rpm -ivh 是 Linux 中用于安装 RPM(Red Hat Package Manager)软件包的命令。tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar得到的效果如下。若已安装,需要先做卸载MySQL的操作命令是:rpm -e --nodeps mariadb-libs。使用的命令是: mysqld --initialize --user=mysql。-v:表示显示详细(verbose)信息,提供更多安装过程中的输出信息。14.查看已有的数据库。
2025-05-18 19:16:53
583
原创 RDD-自定义分区器案例
在运行代码后,output 目录下会生成与 RDD 分区数量相同的文本文件,这里 RDD 分区数设置为 3,所以会生成 3 个文件,文件名通常为 part-00000、part- 00001、part-00002。// 使用 parallelize 方法创建 RDD,并设置分区数为 3。// 使用 SparkConf 创建 SparkContext 对象。// 创建 SparkConf 对象,设置应用程序名称和运行模式。// 将 RDD 保存为文本文件,保存路径为 "output"
2025-05-15 23:42:20
204
原创 RDD的五大特征
按照“移动数据不如移动计算”的理念,Spark在进行任务调度时,会尽可能地将任务分配到其所要处理数据块的存储位置。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。举个生活中的例子:高考的时候,每个班的同学都打散到不同的考场,此时的高3(8)班就是一个抽象的概念,在实际中,这个班级的学生可能分布在5个不同的考场。RDD的方法会作用在所有的分区上。
2025-05-15 23:35:28
127
原创 RDD案例-数据清洗(2)
RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。RDD的分区是RDD数据存储的最小单位。如下图示,假如1个RDD有3个分区,RDD内存储了123456,那么数据本质上分散在三个分区内进行存储。举个生活中的例子:高考的时候,每个班的同学都打散到不同的考场,此时的高3(8)班就是一个抽象的概念,在实际中,这个班级的学生可能分布在5个不同的考场。
2025-05-15 23:31:00
328
原创 RDD案例-数据清洗
/ 获取并打印分区数val partitionCount = hdfsRDD.getNumPartitions。val distData = sc.parallelize(data, 2) // 第二个参数是分区数。// 通过 parallelize 方法将本地集合转换为 RDD。// 创建 SparkConf 和 SparkContext。// 创建 SparkConf 和 SparkContext。// 从 HDFS 加载文本文件。// 创建一个本地集合。方法来创建 RDD。例如,读入外部的文件。
2025-05-15 23:27:11
257
原创 打包spark代码在集群中运行
复制之前的文件,重命名为WordCount_online,并修改两个地方:输入目录改成args(0), 输出的目录改成args(1)。// 写一个spark程序,统计input目录下所有文本文件中单词的词频。完成修改之后,要刷新maven,以下载相关的插件。// 创建 SparkContext 对象。// 将所有分区的数据合并成一个分区。// 停止 SparkContext。// 配置 Spark 应用程序。// 读取目录下的所有文本文件。// 把结果保存在output下。// 保存结果到文件。
2025-05-15 23:23:01
566
原创 从0开始配置spark-local模式
这里使用单机模式快运行第一个Spark程序,让大家有个基本的印象。在安装Spark时,它就提供了一些示例程序,我们可以直接来调用。进入到spark-local,运行命令spark-submit命令。mv是linux的命令,这里的 \ 是换行输入的意思,整体的代码就只有一句,只不过太长了,我们把它拆开成几个部分来输入,其中\ 的意思就是这里写不下,写在下一行。接下来的操作,我们把它上传到集群中的节点,并解压运行。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。
2025-04-21 11:03:30
276
原创 spark和Hadoop的区别与联系
**维度** | **Hadoop** | **Spark** || **速度** | 慢(基于磁盘I/O) | 快(基于内存计算,可达Hadoop的10~100倍) |- **Spark**逐渐成为实时和迭代计算的标准,但**Hadoop**仍是廉价海量存储的基石。- **选择建议**:需要实时性选Spark;
2025-04-21 08:30:13
685
1
原创 mapreduce的工作原理
对Map输出的key进行排序和分区(Partition)- 输入数据被分割成固定大小的块(默认128MB)- 处理来自不同Mapper的相同key的数据。- 默认每个Reducer生成一个输出文件。- 输出<key, value>中间结果。- 相同key的value会被合并到一起。- 数据通过网络传输到Reducer节点。- 执行用户编写的reduce()函数。- 每个Map任务处理一个输入分片。- 执行用户编写的map()函数。- 每个分片对应一个Map任务。- 生成最终输出结果。
2025-04-01 10:44:24
200
原创 虚拟机配置
linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。命令如下:vi /etc/sysconfig/network-scripts/ifcfg-ens33。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。(3)设置虚拟机的IP。
2025-03-03 19:16:50
201
原创 vi的基本使用
保存并退出:在命令模式下输入 `:wq` 或 `:x`,然后按 `Enter`。- `ndd`:删除从当前行开始的 `n` 行(如 `3dd` 删除 3 行)- `nyy`:复制从当前行开始的 `n` 行(如 `3yy` 复制 3 行)- `nG`:移动到第 `n` 行(如 `5G` 移动到第 5 行)- `/关键词`:向下查找(按 `n` 查找下一个,`N` 查找上一个)- 在命令模式下按 `i`、`a`、`o` 等键可进入插入模式。5. 保存并退出:输入 `:wq`,按 `Enter`
2025-02-24 23:10:40
357
原创 VM虚拟机安装和centos
选择“Linux”作为客户机操作系统,版本选择“CentOS 7”,点击“下一步”。- 打开VMware Workstation Pro,选择“创建新的虚拟机”。- 选择“创建新虚拟磁盘”,设置磁盘大小(建议40GB以上),点击“下一步”。- 勾选“增强型键盘驱动程序”,并根据需要选择是否安装其他附加组件。- 勾选“我接受许可协议中的条款”,继续点击“下一步”。- 选择语言(推荐“简体中文”),点击“下一步”。- 选择“稍后安装操作系统”,点击“下一步”。- 设置虚拟机名称和存储位置,点击“下一步”。
2025-02-24 22:55:26
195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人