Skip to content

Commit 47b3848

Browse files
committed
[SPARK-2953] Allow using short names for io compression codecs
Instead of requiring "org.apache.spark.io.LZ4CompressionCodec", it is easier for users if Spark just accepts "lz4", "lzf", "snappy".
1 parent c235b83 commit 47b3848

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

core/src/main/scala/org/apache/spark/io/CompressionCodec.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,24 @@ trait CompressionCodec {
4646

4747

4848
private[spark] object CompressionCodec {
49+
50+
private val shortCompressionCodecNames = Map(
51+
"lz4" -> classOf[LZ4CompressionCodec].getName,
52+
"lzf" -> classOf[LZFCompressionCodec].getName,
53+
"snappy" -> classOf[SnappyCompressionCodec].getName)
54+
4955
def createCodec(conf: SparkConf): CompressionCodec = {
5056
createCodec(conf, conf.get("spark.io.compression.codec", DEFAULT_COMPRESSION_CODEC))
5157
}
5258

5359
def createCodec(conf: SparkConf, codecName: String): CompressionCodec = {
54-
val ctor = Class.forName(codecName, true, Utils.getContextOrSparkClassLoader)
60+
val codecClass = shortCompressionCodecNames.getOrElse(codecName.toLowerCase, codecName)
61+
val ctor = Class.forName(codecClass, true, Utils.getContextOrSparkClassLoader)
5562
.getConstructor(classOf[SparkConf])
5663
ctor.newInstance(conf).asInstanceOf[CompressionCodec]
5764
}
5865

59-
val DEFAULT_COMPRESSION_CODEC = classOf[SnappyCompressionCodec].getName
66+
val DEFAULT_COMPRESSION_CODEC = "snappy"
6067
}
6168

6269

core/src/test/scala/org/apache/spark/io/CompressionCodecSuite.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,33 @@ class CompressionCodecSuite extends FunSuite {
5656
testCodec(codec)
5757
}
5858

59+
test("lz4 compression codec short form") {
60+
val codec = CompressionCodec.createCodec(conf, "lz4")
61+
assert(codec.getClass === classOf[LZ4CompressionCodec])
62+
testCodec(codec)
63+
}
64+
5965
test("lzf compression codec") {
6066
val codec = CompressionCodec.createCodec(conf, classOf[LZFCompressionCodec].getName)
6167
assert(codec.getClass === classOf[LZFCompressionCodec])
6268
testCodec(codec)
6369
}
6470

71+
test("lzf compression codec short form") {
72+
val codec = CompressionCodec.createCodec(conf, "lzf")
73+
assert(codec.getClass === classOf[LZFCompressionCodec])
74+
testCodec(codec)
75+
}
76+
6577
test("snappy compression codec") {
6678
val codec = CompressionCodec.createCodec(conf, classOf[SnappyCompressionCodec].getName)
6779
assert(codec.getClass === classOf[SnappyCompressionCodec])
6880
testCodec(codec)
6981
}
82+
83+
test("snappy compression codec short form") {
84+
val codec = CompressionCodec.createCodec(conf, "snappy")
85+
assert(codec.getClass === classOf[SnappyCompressionCodec])
86+
testCodec(codec)
87+
}
7088
}

0 commit comments

Comments
 (0)