Repository: hive Updated Branches: refs/heads/master 0bf80f3a0 -> 63ff7e2bd
HIVE-16677 : CTAS with no data fails in Druid (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan) (addendum) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/63ff7e2b Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/63ff7e2b Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/63ff7e2b Branch: refs/heads/master Commit: 63ff7e2bd3630bf51023abfcce4debefaa25a4ea Parents: 0bf80f3 Author: Jesus Camacho Rodriguez <[email protected]> Authored: Mon Oct 16 09:53:58 2017 -0700 Committer: Jesus Camacho Rodriguez <[email protected]> Committed: Mon Oct 16 09:54:46 2017 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hive/druid/DruidStorageHandler.java | 1 + .../org/apache/hadoop/hive/druid/io/DruidOutputFormat.java | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/63ff7e2b/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java ---------------------------------------------------------------------- diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java index cc409ab..8117633 100644 --- a/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java +++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java @@ -544,6 +544,7 @@ public class DruidStorageHandler extends DefaultHiveMetaHook implements HiveStor @Override public void configureOutputJobProperties(TableDesc tableDesc, Map<String, String> jobProperties) { + jobProperties.put(Constants.DRUID_DATA_SOURCE, tableDesc.getTableName()); jobProperties.put(Constants.DRUID_SEGMENT_VERSION, new DateTime().toString()); jobProperties.put(Constants.DRUID_JOB_WORKING_DIRECTORY, getStagingWorkingDir().toString()); // DruidOutputFormat will write segments in an intermediate directory http://git-wip-us.apache.org/repos/asf/hive/blob/63ff7e2b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java ---------------------------------------------------------------------- diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java index da7642c..664e02f 100644 --- a/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java +++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/io/DruidOutputFormat.java @@ -92,7 +92,12 @@ public class DruidOutputFormat<K, V> implements HiveOutputFormat<K, DruidWritabl tableProperties.getProperty(Constants.DRUID_SEGMENT_GRANULARITY) != null ? tableProperties.getProperty(Constants.DRUID_SEGMENT_GRANULARITY) : HiveConf.getVar(jc, HiveConf.ConfVars.HIVE_DRUID_INDEXING_GRANULARITY); - final String dataSource = tableProperties.getProperty(Constants.DRUID_DATA_SOURCE); + // If datasource is in the table properties, it is an INSERT/INSERT OVERWRITE as the datasource + // name was already persisted. Otherwise, it is a CT/CTAS and we need to get the name from the + // job properties that are set by configureOutputJobProperties in the DruidStorageHandler + final String dataSource = tableProperties.getProperty(Constants.DRUID_DATA_SOURCE) == null + ? jc.get(Constants.DRUID_DATA_SOURCE) + : tableProperties.getProperty(Constants.DRUID_DATA_SOURCE); final String segmentDirectory = jc.get(Constants.DRUID_SEGMENT_INTERMEDIATE_DIRECTORY); final GranularitySpec granularitySpec = new UniformGranularitySpec(
