配置spark 之前有个前提,就是hadoop snappy 安装成功,检验方法在我上一篇博客有(https://blog.csdn.net/qq_34394465/article/details/85064406)
接下来 添加 spark snappy 依赖包
vim /data/soft/spark-2.1.0-bin-hadoop2.7/conf/spark-defaults.conf
spark.driver.extraClassPath /data/soft/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar
spark.driver.extraLibraryPath /data/soft/hadoop-2.7.3/lib/native
spark.executor.extraClassPath /data/soft/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar
spark.executor.extraLibraryPath /data/soft/hadoop-2.7.3/lib/native
好了,接下来 新启的任务就可以使用snappy了
可能有人会问,不用配启用配置吗,这是因为spark 默认压缩格式就是snappy,启用配置是默认启用,所以检测到hadoop snappy 配置,会自动启用(rdd 输出压缩是默认不开启的,如果有需要需要自己配,前提是hadoop map 输出压缩必须先开启)
添加map输出压缩配置,在 hadoop mapred-site.xml,仅配置map部分:
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
将集群配置修改动态同步到每个节点
hadoop dfsadmin -refreshNodes
spark.rdd.compress true
新任务开启rdd 输出压缩
spark 输出压缩配置(这个不建议,因为snappy 不可 split ,在输出压缩文件到hdfs上 会导致其他组件解压缩读取问题,例如 druid等)
查看配置 hadoop mapred-site.xml,仅配置mapreduce部分:
<property>
<name>mapred.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
将集群配置修改动态同步到每个节点
hadoop dfsadmin -refreshNodes (官方建议 使用 hadoop-daemon.sh ,暂不清楚原因,本地测试未发现问题)
spark启新任务,输出结果直接会进行snappy 压缩