spark的压缩使用和简单介绍

总览

今天碰到了一个spark sql 压缩的问题,所以今天来讲一下spark的压缩
一切参考spark2.4.1版本来讲解

spark 压缩分为3块,rdd压缩 broadcast压缩 和spark sql的压缩

1、rdd 压缩

spark.rdd.compress

Whether to compress serialized RDD partitions (e.g. for StorageLevel.MEMORY_ONLY_SER in Java and Scala or StorageLevel.MEMORY_ONLY in Python). Can save substantial space at the cost of some extra CPU time. Compression will use spark.io.compression.codec.

用来压缩rdd的分区,默认值为false。用来一想也是,rdd的分区缓存在内存中,我们本身就是想使用内存来加速,压缩和相应的解压缩反而浪费了时间。
默认的压缩格式是用的spark.io.compression.codec配置的值

2、broadcast压缩

spark.broadcast.compress

Whether to compress broadcast variables before sending them. Generally a good idea. Compression will use spark.io.compression.codec.

压缩发送的广播变量,默认压缩。压缩格式使用spark.io.compression.codec 配置的值。
想想也合理,压缩广播变量,可以大大的节省带宽和IO,节省效率。

3、spark sql中的压缩

spark sql中的压缩指的比如spark sql建表 spark sql写文件等操作。
这块的配置在官方文档没有,这边顺带说声spark sql 想查看相关配置应该怎么做。
打开spark shell 使用
spark.sql(“SET -v”).write.saveAsTable(“demo”); 把这些spark sql的配置直接存成一张表也方便查看,不然80多个有点多。

spark.sql.parquet.compression.codec

默认值 snappy Acceptable values include: none, uncompressed, snappy, gzip, lzo, brotli, lz4, zstd.

spark.sql.orc.compression.codec snappy

默认值 snappy Acceptable values include: none, uncompressed, snappy, zlib, lzo

上面两个配置说的就是写parquet 和orc 文件默认都是使用snappy格式压缩的。包括可以接受的参数值。

Spark环境搭建与使用 Apache Spark是一个开源的大数据处理框架,可以快速、高效地处理大规模的数据集。它支持多种数据处理方式,包括批处理、流处理和机器学习等。 Spark可以在本地模式下运行,也可以在分布式模式下运行。在分布式模式下,Spark可以利用多台服务器的计算资源,进行大规模的数据处理。 本文将介绍如何在本地环境中搭建Spark,并通过一个简单的例子来演示Spark使用Spark环境搭建 在开始之前,需要确认已经安装了Java环境。可以通过以下命令检查Java环境是否已经安装: ``` java -version ``` 如果Java环境没有安装,可以去官网下载并安装Java。 接下来,需要下载Spark。可以从官网下载最新版本的Spark。下载完成后,解压缩到指定目录。 打开终端,进入Spark的bin目录,执行以下命令启动Spark: ``` ./spark-shell ``` 这个命令将启动Spark的交互式Shell。在Shell中,可以输入Spark的API命令进行数据处理。 Spark使用示例 下面,通过一个简单的例子来演示Spark使用。该例子将统计一组数字中的奇数个数。 首先,在Spark的Shell中,创建一个RDD: ``` val nums = sc.parallelize(1 to 10) ``` 这个命令将创建一个包含1到10的数字的RDD。接下来,通过filter()方法,筛选出奇数: ``` val odds = nums.filter(_ % 2 != 0) ``` 这个命令将创建一个包含奇数的RDD。最后,通过count()方法,计算奇数的个数: ``` val count = odds.count() ``` 这个命令将返回奇数的个数。可以通过以下命令输出结果: ``` println(count) ``` 这个例子演示了Spark的基本用法。通过Spark的API,可以快速、高效地处理大规模的数据集。 总结 本文介绍了如何在本地环境中搭建Spark,并通过一个简单的例子来演示Spark使用Spark是一个强大的大数据处理框架,可以帮助我们快速、高效地处理大规模的数据集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值