diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 0d0196e..fe2e96f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -248,6 +248,7 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDTFInline; import org.apache.hadoop.hive.ql.util.ResourceDownloader; import org.apache.hadoop.hive.serde.serdeConstants; +import org.apache.hadoop.hive.serde2.DelimitedJSONSerDe; import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe; import org.apache.hadoop.hive.serde2.NoOpFetchFormatter; @@ -4006,9 +4007,13 @@ private Operator genScriptPlan(ASTNode trfm, QB qb, Operator input) .getChild(inputSerDeNum))).getChild(0), inpColumns.toString(), inpColumnTypes.toString(), false); } else { - inInfo = PlanUtils.getTableDesc(serde, Integer + // It is not a very clean way, and should be modified later - due to + // compatibility reasons, user sees the results as JSON for custom + // scripts and has no way for specifying that. Right now, it is + // hard-coded to DelimitedJSONSerDe + inInfo = PlanUtils.getTableDesc(DelimitedJSONSerDe.class, Integer .toString(fieldSeparator), inpColumns.toString(), inpColumnTypes - .toString(), false, true); + .toString(), false); } if (trfm.getChild(outputSerDeNum).getChildCount() > 0) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java index 5229700..39fa66f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java @@ -62,9 +62,7 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.AbstractSerDe; -import org.apache.hadoop.hive.serde2.DelimitedJSONSerDe; import org.apache.hadoop.hive.serde2.Deserializer; -import org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe; import org.apache.hadoop.hive.serde2.binarysortable.BinarySortableSerDe; import org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe; import org.apache.hadoop.hive.serde2.lazy.LazySerDeParameters; @@ -231,26 +229,18 @@ public static TableDesc getDefaultTableDesc(String separatorCode, columnTypes, lastColumnTakesRestOfTheLine); } - public static TableDesc getTableDesc( - Class serdeClass, String separatorCode, - String columns, String columnTypes, boolean lastColumnTakesRestOfTheLine) { - return getTableDesc(serdeClass, separatorCode, columns, columnTypes, - lastColumnTakesRestOfTheLine, false); - } - - public static TableDesc getTableDesc( - Class serdeClass, String separatorCode, - String columns, String columnTypes, boolean lastColumnTakesRestOfTheLine, - boolean useDelimitedJSON) { + public static TableDesc getTableDesc(Class serdeClass, + String separatorCode, String columns, String columnTypes, + boolean lastColumnTakesRestOfTheLine) { return getTableDesc(serdeClass, separatorCode, columns, columnTypes, - lastColumnTakesRestOfTheLine, useDelimitedJSON, "TextFile"); + lastColumnTakesRestOfTheLine, "TextFile"); } public static TableDesc getTableDesc( Class serdeClass, String separatorCode, String columns, String columnTypes, boolean lastColumnTakesRestOfTheLine, - boolean useDelimitedJSON, String fileFormat) { + String fileFormat) { Properties properties = Utilities.makeProperties( serdeConstants.SERIALIZATION_FORMAT, separatorCode, serdeConstants.LIST_COLUMNS, @@ -269,15 +259,6 @@ public static TableDesc getTableDesc( "true"); } - // It is not a very clean way, and should be modified later - due to - // compatibility reasons, - // user sees the results as json for custom scripts and has no way for - // specifying that. - // Right now, it is hard-coded in the code - if (useDelimitedJSON) { - serdeClass = DelimitedJSONSerDe.class; - } - Class inputFormat, outputFormat; // get the input & output file formats if ("SequenceFile".equalsIgnoreCase(fileFormat)) { @@ -302,7 +283,7 @@ public static TableDesc getTableDesc( public static TableDesc getDefaultQueryOutputTableDesc(String cols, String colTypes, String fileFormat, Class serdeClass) { TableDesc tblDesc = - getTableDesc(serdeClass, "" + Utilities.ctrlaCode, cols, colTypes, false, false, fileFormat); + getTableDesc(serdeClass, "" + Utilities.ctrlaCode, cols, colTypes, false, fileFormat); // enable escaping tblDesc.getProperties().setProperty(serdeConstants.ESCAPE_CHAR, "\\"); tblDesc.getProperties().setProperty(serdeConstants.SERIALIZATION_ESCAPE_CRLF, "true"); @@ -345,7 +326,7 @@ public static TableDesc getTableDesc(CreateTableDesc crtTblDesc, String cols, } ret = getTableDesc(serdeClass, separatorCode, columns, columnTypes, - lastColumnTakesRestOfTheLine, false); + lastColumnTakesRestOfTheLine); // set other table properties Properties properties = ret.getProperties(); @@ -442,7 +423,7 @@ public static TableDesc getTableDesc(CreateViewDesc crtViewDesc, String cols, St } ret = getTableDesc(serdeClass, separatorCode, columns, columnTypes, - lastColumnTakesRestOfTheLine, false); + lastColumnTakesRestOfTheLine); // set other table properties Properties properties = ret.getProperties();