yihua commented on code in PR #12866:
URL: https://github.com/apache/hudi/pull/12866#discussion_r2099082566
##########
hudi-io/src/main/java/org/apache/hudi/io/compress/CompressionCodec.java:
##########
@@ -32,6 +36,9 @@ public enum CompressionCodec {
SNAPPY("snappy"),
ZSTD("zstd");
+ private static final Map<String, CompressionCodec>
+ HFILE_NAME_TO_COMPRESSION_CODEC_MAP = createNameToCompressionCodecMap();
Review Comment:
```suggestion
NAME_TO_COMPRESSION_CODEC_MAP = createNameToCompressionCodecMap();
```
##########
hudi-hadoop-common/src/main/java/org/apache/hudi/common/util/HFileUtils.java:
##########
@@ -75,12 +72,12 @@ public class HFileUtils extends FileFormatUtils {
* @param paramsMap parameter map containing the compression codec config.
* @return the {@link Compression.Algorithm} Enum.
*/
- public static Compression.Algorithm getHFileCompressionAlgorithm(Map<String,
String> paramsMap) {
- String algoName = paramsMap.get(HFILE_COMPRESSION_ALGORITHM_NAME.key());
- if (StringUtils.isNullOrEmpty(algoName)) {
- return Compression.Algorithm.GZ;
+ public static CompressionCodec getHFileCompressionAlgorithm(Map<String,
String> paramsMap) {
Review Comment:
Let's track a JIRA ticket to move `HFileUtils` class to `hudi-io` or
`hudi-common` module.
##########
hudi-io/src/main/java/org/apache/hudi/io/compress/CompressionCodec.java:
##########
@@ -41,4 +48,30 @@ public enum CompressionCodec {
public String getName() {
return name;
}
+
+ public static CompressionCodec findCodecByName(String name) {
+ CompressionCodec codec =
+ HFILE_NAME_TO_COMPRESSION_CODEC_MAP.getOrDefault(name.toLowerCase(),
null);
+ if (codec != null) {
+ return codec;
+ } else {
+ throw new IllegalArgumentException(
+ String.format("Cannot find compression codec: %s", name));
+ }
+ }
+
+ /**
+ * Create a mapping from its name to the compression codec.
+ */
+ private static Map<String, CompressionCodec>
createNameToCompressionCodecMap() {
+ Map<String, CompressionCodec> result = new HashMap<>();
+ result.put(LZO.getName(), LZO);
+ result.put(GZIP.getName(), GZIP);
+ result.put(NONE.getName(), NONE);
+ result.put(SNAPPY.getName(), SNAPPY);
+ result.put(LZ4.getName(), LZ4);
+ result.put(BZIP2.getName(), BZIP2);
+ result.put(ZSTD.getName(), ZSTD);
Review Comment:
Use `Arrays.stream(values()).forEach(codec -> result.put(codec.getName(),
codec));` to iterate through all values instead of hardcoding the enums?
##########
hudi-io/src/main/java/org/apache/hudi/io/compress/CompressionCodec.java:
##########
@@ -41,4 +48,30 @@ public enum CompressionCodec {
public String getName() {
return name;
}
+
+ public static CompressionCodec findCodecByName(String name) {
+ CompressionCodec codec =
+ HFILE_NAME_TO_COMPRESSION_CODEC_MAP.getOrDefault(name.toLowerCase(),
null);
Review Comment:
```suggestion
CompressionCodec codec =
HFILE_NAME_TO_COMPRESSION_CODEC_MAP.get(name.toLowerCase());
```
##########
hudi-io/src/main/java/org/apache/hudi/io/compress/CompressionCodec.java:
##########
@@ -41,4 +48,30 @@ public enum CompressionCodec {
public String getName() {
return name;
}
+
+ public static CompressionCodec findCodecByName(String name) {
+ CompressionCodec codec =
+ HFILE_NAME_TO_COMPRESSION_CODEC_MAP.getOrDefault(name.toLowerCase(),
null);
+ if (codec != null) {
+ return codec;
+ } else {
+ throw new IllegalArgumentException(
+ String.format("Cannot find compression codec: %s", name));
+ }
Review Comment:
Use `ValidationUtils.checkArgument` instead
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]