Spark custom OutputCommitter
What's inside this article
⌄
- Spark custom OutputCommiter parquet
- How to implement Spark OutputCommiter
- Spark parquet committer customization
- Spark custom parquet writer
If you need to make your own implementation of OutputCommiter for spark parquet-output tasks, then first you need to make a class that extends from org.apache.hadoop.mapreduce.OutputCommiter:
public class YourOutputCommiter extends OutputCommiter {
// ...
}
Further, regardless of implementation of the OutputCommiter, you need to register the full class name in the Hadoop (!) configuration of Spark like this:
javaSparkContext.hadoopConfiguration().set("spark.sql.parquet.output.committer.class", YourOutputCommiter.class.getCanonicalName());
Example for Scala:
session.sparkContext.hadoopConfiguration.set("spark.sql.parquet.output.committer.class", "your.package.YourOutputCommiter")
An example of the complete JavaSparkContext creation process:
private JavaSparkContext createJavaSparkContext() {
SparkConf conf = new SparkConf()
.setAppName("your-app-name")
.set("your.other.spark.parameters", "your.other.spark.values");
JavaSparkContext javaSparkContext = new JavaSparkContext(conf);
javaSparkContext.setCheckpointDir("/tmp");
javaSparkContext.hadoopConfiguration().set("spark.sql.parquet.output.committer.class", YourOutputCommiter.class.getCanonicalName());
return javaSparkContext;
}