- 博客(462)
- 收藏
- 关注
原创 Spark DStream之有状态操作实现WordCount
在之前的案例中,实现的DStream是通过每个采集周期内独立进行逻辑处理的,在某些业务场景中,可能是需要将每个周期内的计算结果进行汇总,这时就需要一种有状态的采集。可以看到最终态的count值确实是所有周期内的结果汇总在一起的。
2022-11-24 20:11:35
230
原创 Spark DStream之无状态操作实现WordCount
可以看到控制台中是以2秒的周期进行数据采集的,同一周期内的数据一起处理。这样就实现了DStream中近实时、微批量的数据处理。
2022-11-23 20:52:12
489
原创 Spark join操作
所以在使用join操作的时候要慎重,因为在这个过程中涉及到笛卡尔积的计算会造成join之后的数据量大量增长,引起性能问题。当两个RDD中的key没有同时存在时,只会将共同存在的key的值进行连接,各自单独存在的key会丢掉。rdd1中单独存在的key为x,和rdd2中单独存在的key为y的元素都不会进行连接。同一个key在某个RDD中出现多次时,会做一个类似于笛卡尔积的操作,进行两两连接。rdd1调用右外连接时,会以rdd2为主,将rdd2中的所有key进行连接。
2022-10-30 16:20:34
235
原创 Spark sort算子
在多个分区的情况下,如果使用sort,会将所有分区的数据放在一起进行排序,排序后再重新分区,而不是在各自的分区内进行排序,在该算子实现过程中是有shuffle操作的。默认排序是升序,也就是sortBy中的参数二表示升序默认是true,如果需要降序排序,可以将其设置为false。可以看到结果中是将原RDD中的所有数据放一起进行排序的,之后再进行分区。可以看到运行结果也是先对全局RDD进行排序,再分组。对于字符串类型的数据,会按照字典序进行排序。
2022-10-25 21:11:38
377
原创 Spark coalesce算子
出现这样的结果是因为,coalesce算子默认不会打乱原来分区内的数据,即不会拆散原来某个分区内的数据重新组合,这样也就会可能导致数据倾斜,所以我们可以加上第二个参数设置为true,来表示在缩减分区时允许数据重新组合(是否shuffle)来实现数据均衡。好像并没有像我们想的那样会将原来RDD中的前三个元素放在一个分区,后三个元素放在一个分区。原来RDD中的前两个元素被分到了一个分区,后两个元素被分到了一个分区。这样,缩减分区后的数据相对来讲就不会出现不平衡的情况。
2022-10-25 19:52:38
504
原创 Spark测试元素操作前后分区不变
可以看到,原始元素中1和2都在分区00000中,做乘操作后,对应的2和4也在分区00000中,以上测试说明在操作元素前后,分区不变。在Spark中,对原始的RDD中的元素进行操作,例如乘法操作,操作前后,元素对应的值所在的分区不变。生成了两个目录,并在各自目录下根据我们的参数配置,各自生成了两个分区文件。
2022-10-20 21:19:14
120
原创 Linux环境搭建spark3 yarn模式
这里一定要注意hostname中不能包含下划线!搭建好之后启动hadoop集群。至此,spark的搭建基本完成。
2022-10-12 22:05:56
526
原创 Hadoop3.2.0运行wordcount程序报错Please check whether your etc/hadoop/mapred-site.xml contains the below
将修改后的文件同步到集群中的其他节点上,不需要重启集群,重新运行原来自己要执行的程序即可正常执行。
2022-10-12 20:28:37
495
原创 启动hadoop集群报错ERROR: Cannot set priority of namenode process 2570
因为主机名中包含了下划线,所以报错。
2022-10-11 22:01:16
681
1
原创 运行Spark报错org.apache.spark.SparkException: A master URL must be set in your configuration
【代码】运行Spark报错org.apache.spark.SparkException: A master URL must be set in your configuration。
2022-10-08 21:16:36
377
原创 Scala与Java静态属性的简单实现
在java中我们可以通过定义一个类及其属性来实现一些功能,对于一些静态属性,可以直接通过类来调用,而在scala中没有了静态这个概念,如何实现这样的功能。
2022-08-24 21:06:34
129
原创 Java与Scala编译的简单对比
在java中,编译是通过javac来编译的,而在scala中,编译是通过scalac来编译的。在编译的过程中也可以感受到scala的编译相对来说会比java编译得慢一些。java文件的后缀是.java,而scala文件的后缀是.scala。
2022-08-21 21:21:34
255
原创 Windows下搭建Scala环境
由于我们使用Scala最主要是因为我们要之后要使用Spark,而最新版本的Spark是3.0版本的,它是依赖于Scala2.12.x版本的,所以这里我们就下载Scala2.12.x的。
2022-08-21 19:46:48
175
原创 HDFS之小文件归档
在实际生产应用总难免会遇到一些小文件,而对于任何一个文件块来说,无论块本身的大小如何,他们的元数据都会在内存中占用150个字节,如果系统中存储了大量的小文件,那么就会造成较大的资源浪费,所以我们会对小文件进行归档,使多个小文件当作一个文件去占用内存中的150个字节。该过程背后实际上是MapReduce在操作,所以要确保yarn进程是启动的。这样就简单地实现了HDFS中小文件的归档。...
2022-08-10 21:41:33
320
原创 Splunk中解决数据质量问题常见日期格式化
在splunk索引数据时,会对数据进行一些自动的解析和提取,比如帮我们提取原始log里的日期,也会对某些格式的数据进行合并,将多行的数据合并为一条记录存储在splunk中,而这些自动提取的过程有时并不符合我们真实的业务逻辑,所以需要我们自己去配置;或者对于有些格式的数据,splunk自己也无法判断如何处理时可能就会出现各种解析错误。......
2022-08-09 20:15:00
283
原创 MapReduce中ETL数据清洗案例
在实际业务场景中,我们在对数据处理时会先对数据进行清洗,比如过滤掉一些无效数据;清洗数据只需要map阶段即可,不需要reduce阶段。在该案例中我们要实现的是员工表数据中只留下部门编号为d01的数据。可以看到只有部门为d01的数据留下来了,符合预期结果。这样就简单地实现了ETL中地数据清洗过程。...
2022-08-01 21:29:03
544
原创 Hadoop3.x中MapReduce实现Map端join案例
在上一个案例中我们使用的是reduce端的join实现了两个表之间的连接,但是reduce端join会使大量数据在传输过程中较多产生资源的消耗,同时也会造成数据倾斜。如果我们能将这些数据在map端进行处理,这样在数据传给reduce端的时候就会压力较小,并且此时reduce端不需要在进行特殊处理,所以我们就可以将reduceTask的个数设置为0。mapjoin的大致思路就是在mapper中初始化时将一张小表进行缓存,然后在map阶段用大表来对这个小表进行join,该案例中我们会将部门表进行缓存。.....
2022-08-01 19:12:14
91
原创 Hadoop3.x中MapReduce实现Reduce端join案例
有两个表,一个表是员工表(eid,name,deptid),另一个表是部门表(deptid,dept),想要实现的功能是经过reduce之后最后输出的是一个将员工表中的deptid替换为部门表中的dept的一个表(eid,name,dept),连个表之间通过deptid进行join。在数据库中我们经常会遇到一些业务场景需要将多个表进行join实现某些特定的业务逻辑,在MapReduce中也可以实现join,这个join功能可以是在map端也可以是在reduce端。...
2022-07-31 20:29:24
212
原创 Hadoop3中实现MapReduce自定义OutputFormat
在这个案例中我们想要实现的是,对于一个订单文件中的订单数据进行过滤,将订单中的不同类别商品输出到不同的文件中,这里与分区不同的是,分区无法指定写入的输出文件名,而这里我们可以指定水果放在fruit.txt中,冷冻食品放到frozen.txt中,蔬菜放到vegetable.txt中。虽然说我们需要自定义OutputFormat去实现输出类,但真正写数据的实现是由RecordWriter完成的,素以我们需要自定义一个类去实现RecordWriter中的方法。这样就简单地实现了自定义OutputFormat。..
2022-07-29 22:22:01
215
原创 Hadoop3.x使用CombineTextInputFormat实现小文件合并
在hadoop中对文件进行切片时,默认使用TextInputFormat中的切片机制,即按文件进行切片,不管文件大小,每个文件都会是一个单独的切片,并且每个文件/切片都会由一个单独的MapTask进行处理,但是这种切片机制会造成一个问题,如果有大量的小文件,那么也就要分配大量的MapTask,但每个文件的数据量又很小,光是启动MapTask的过程就会消耗大量的资源,这样显然是不合理的。以上的例子就简单测试了CombineTextInputFormat在小文件切片时的应用。可以看到日志中显示有5个切片。...
2022-07-24 21:29:44
438
原创 Hadoop HDFS API客户端配置
https://github.com/cdarlint/winutils这里我下载的是3.1.0版本的。下载后解压,将其余版本的安装包删掉,只留下了我需要的3.1.0安装包: 如果双击的之后是闪了一下,那么说明安装成功,如果是出现下面的报错,则是由于缺少一些运行库。如果报错,可以参考这篇博客中的解决方法:https://blog.csdn.net/QYHuiiQ/article/details/125694148?spm=1001.2014.3001.5502 在src/main/resources
2022-07-10 15:35:33
416
原创 vmware启动虚拟机报错无法连接到虚拟机
之前可以正常启动虚拟机,但是今天突然无法启动,报如下错:可能是因为我昨天为了解决别的问题安装了vcredist_x64,导致又产生了新的问题。解决方法:在试了网上很多方法之后都没能解决,按照下面的方法成功解决。下载微软运行库,并解压:链接:https://pan.baidu.com/s/1M85poWXabpOaYoI-w_Uabg 提取码:zct7 双击运行:重启电脑之后问题解决了。......
2022-07-10 14:37:41
1835
原创 Hadoop HDFS API客户端安装报错找不到MSVCR100.dlll
在windows上配置好环境变量运行winutils时报如下错误:解决方案:注意我的windows是64位的,所以这里下载的是vcredist_x64.exe。一定要注意下载2010版本的,下载之后双击安装即可。https://docs.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170双击exe文件安装: 安装完成,问题解决。踩过的坑:按照网上的很多方法尝试下载MSVCR100.dlll文件然后放到相应的目录下,
2022-07-09 20:34:24
240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人