0%

Compression Code

Snappy

Snappy使用C++ 开发的压缩和解压缩开发包,只在提供高速压缩速度和合理压缩率。

主要是用内存空间换压缩速度,2015年的i7大概能提供250-500M的压缩速度。

Spark取消CSV文件输出默认的Snappy压缩格式:

1
2
3
4
5
6
7
8
9
10
11
var spark = SparkSession.builder().appName("sparktoDisk").enableHiveSupport().getOrCreate()

// Spark2之后都是直接用SparkSession,对于之前的Conf中的属性用下面的格式设置。 压缩选项可以设置两个,分别是map阶段和reduce阶段的.

//对map输出的内容进行压缩
spark.conf.set("mapred.compress.map.output","true");
spark.conf.set("mapred.map.output.compression.codec","org.apache.hadoop.io.compress.SnappyCodec");

//对reduce输出的内容进行压缩
spark.conf.set("mapred.output.compress","true");
spark.conf.set("mapred.output.compression","org.apache.hadoop.io.compress.SnappyCodec");

DF保存为CSV

1
df.coalesce(1).write.option("header","true").csv("sample_file.csv")

使用Lib包压索解压文件

CSDN链接

Python解压snappy文件

  1. 1
    wget https://bootstrap.pypa.io/get-pip.py
  2. 1
    python ./get-pip.py
  3. 1
    yum install gcc-c++
  4. 1
    pip install python-snappy

用法

解压
1
python -m snappy -c uncompressed_file compressed_file.snappy
压缩
1
python -m snappy -d compressed_file.snappy uncompressed_file

阿里云文档说明

阿里云对这些整理的很细致啊,是个找资料的好地方

1
https://www.alibabacloud.com/help/zh/doc-detail/108942.htm

同时还有别的压缩格式的介绍,很详细。

文档中心->数据投递->投递日志到OSS->Snappy