diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index b12fa9b..cc5f421 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -2109,6 +2109,7 @@ private int showCreateTable(Hive db, DataOutputStream outStream, String tableNam final String TBL_COMMENT = "tbl_comment"; final String LIST_PARTITIONS = "partitions"; final String SORT_BUCKET = "sort_bucket"; + final String SKEWED_INFO = "tbl_skewedinfo"; final String ROW_FORMAT = "row_format"; final String TBL_LOCATION = "tbl_location"; final String TBL_PROPERTIES = "tbl_properties"; @@ -2133,6 +2134,7 @@ private int showCreateTable(Hive db, DataOutputStream outStream, String tableNam createTab_str.append("<" + TBL_COMMENT + ">\n"); createTab_str.append("<" + LIST_PARTITIONS + ">\n"); createTab_str.append("<" + SORT_BUCKET + ">\n"); + createTab_str.append("<" + SKEWED_INFO + ">\n"); createTab_str.append("<" + ROW_FORMAT + ">\n"); if (needsLocation) { createTab_str.append("LOCATION\n"); @@ -2225,6 +2227,22 @@ else if (sortCol.getOrder() == BaseSemanticAnalyzer.HIVE_COLUMN_ORDER_DESC) { tbl_sort_bucket += "INTO " + tbl.getNumBuckets() + " BUCKETS"; } + // Skewed Info + StringBuilder tbl_skewedinfo = new StringBuilder(); + SkewedInfo skewedInfo = tbl.getSkewedInfo(); + if (skewedInfo != null && !skewedInfo.getSkewedColNames().isEmpty()) { + tbl_skewedinfo.append("SKEWED BY (" + StringUtils.join(skewedInfo.getSkewedColNames(), ",") + ")\n"); + tbl_skewedinfo.append(" ON ("); + List colValueList = new ArrayList(); + for (List colValues : skewedInfo.getSkewedColValues()) { + colValueList.add("('" + StringUtils.join(colValues, "','") + "')"); + } + tbl_skewedinfo.append(StringUtils.join(colValueList, ",") + ")\n"); + if (tbl.isStoredAsSubDirectories()) { + tbl_skewedinfo.append(" STORED AS DIRECTORIES"); + } + } + // Row format (SerDe) StringBuilder tbl_row_format = new StringBuilder(); StorageDescriptor sd = tbl.getTTable().getSd(); @@ -2269,6 +2287,7 @@ else if (sortCol.getOrder() == BaseSemanticAnalyzer.HIVE_COLUMN_ORDER_DESC) { createTab_stmt.add(TBL_COMMENT, tbl_comment); createTab_stmt.add(LIST_PARTITIONS, tbl_partitions); createTab_stmt.add(SORT_BUCKET, tbl_sort_bucket); + createTab_stmt.add(SKEWED_INFO, tbl_skewedinfo); createTab_stmt.add(ROW_FORMAT, tbl_row_format); // Table location should not be printed with hbase backed tables if (needsLocation) {