diff --git hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java index d1c31f4..0342080 100644 --- hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java +++ hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/AppConfig.java @@ -37,6 +37,7 @@ import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.util.VersionInfo; import org.apache.hive.hcatalog.templeton.tool.JobState; +import org.apache.hive.hcatalog.templeton.tool.TempletonUtils; import org.apache.hive.hcatalog.templeton.tool.ZooKeeperCleanup; import org.apache.hive.hcatalog.templeton.tool.ZooKeeperStorage; @@ -313,7 +314,7 @@ public String controllerMRChildOpts() { //since raw data was (possibly) escaped to make split work, //now need to remove escape chars so they don't interfere with downstream processing for(int i = 0; i < props.length; i++) { - props[i] = StringUtils.unEscapeString(props[i]); + props[i] = TempletonUtils.unEscapeString(props[i]); } return Arrays.asList(props); } diff --git hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java index fff4b68..d0c0c07 100644 --- hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java +++ hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java @@ -347,4 +347,11 @@ public static void addCmdForWindows(ArrayList args) { args.add("call"); } } + + /** + * replaces all occurrences of "\," with ","; returns {@code s} if no modifications needed + */ + public static String unEscapeString(String s) { + return s != null && s.contains("\\,") ? StringUtils.unEscapeString(s) : s; + } } diff --git hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java index 8b46d38..68f12e4 100644 --- hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java +++ hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/tool/TestTempletonUtils.java @@ -306,7 +306,7 @@ public void testPropertiesParsing() throws Exception { String[] newProps = StringUtils.split(input.toString()); for(int i = 0; i < newProps.length; i++) { Assert.assertEquals("Pre/post split values don't match", - StringUtils.unEscapeString(props[i]), StringUtils.unEscapeString(newProps[i])); + TempletonUtils.unEscapeString(props[i]), TempletonUtils.unEscapeString(newProps[i])); } } }