aboutsummaryrefslogtreecommitdiff
path: root/contrib/storage-hive
diff options
context:
space:
mode:
authorVitalii Diravka <vitalii.diravka@gmail.com>2018-07-19 16:00:40 +0300
committerVitalii Diravka <vitalii.diravka@gmail.com>2018-07-19 20:39:36 +0300
commit85344abd1ddb73448bdf67cdc6883cb98795a910 (patch)
treeb89c4dc8a6dac24123dd48bd7367a7bb0f062f40 /contrib/storage-hive
parent92fbed887ca4ca0f2208f367a8f86f8aa4940513 (diff)
DRILL-6614: Allow usage of MapRDBFormatPlugin for HiveStoragePlugin
Diffstat (limited to 'contrib/storage-hive')
-rw-r--r--contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java10
-rw-r--r--contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveStoragePlugin.java21
2 files changed, 23 insertions, 8 deletions
diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java
index 3bc33b331..9eb43a251 100644
--- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java
+++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java
@@ -124,13 +124,6 @@ public class ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan extends StoragePlugi
Map<String, String> parameters = hiveScan.getHiveReadEntry().getHiveTableWrapper().getParameters();
JsonScanSpec scanSpec = new JsonScanSpec(parameters.get(MAPRDB_TABLE_NAME), null);
- MapRDBFormatPlugin mapRDBFormatPlugin = new MapRDBFormatPlugin(
- "hive-maprdb",
- hiveScan.getStoragePlugin().getContext(),
- hiveScan.getHiveConf(),
- hiveScan.getStoragePlugin().getConfig(),
- new MapRDBFormatPluginConfig()
- );
List<SchemaPath> hiveScanCols = hiveScanRel.getColumns().stream()
.map(colNameSchemaPath -> replaceOverriddenSchemaPath(parameters, colNameSchemaPath))
.collect(Collectors.toList());
@@ -138,7 +131,8 @@ public class ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan extends StoragePlugi
new JsonTableGroupScan(
hiveScan.getUserName(),
hiveScan.getStoragePlugin(),
- mapRDBFormatPlugin,
+ // TODO: We should use Hive format plugins here, once it will be implemented. DRILL-6621
+ (MapRDBFormatPlugin) hiveScan.getStoragePlugin().getFormatPlugin(new MapRDBFormatPluginConfig()),
scanSpec,
hiveScanCols
);
diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveStoragePlugin.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveStoragePlugin.java
index adf134843..bdd230e0c 100644
--- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveStoragePlugin.java
+++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveStoragePlugin.java
@@ -37,6 +37,7 @@ import org.apache.drill.common.JSONOptions;
import org.apache.drill.common.exceptions.DrillRuntimeException;
import org.apache.drill.common.exceptions.ExecutionSetupException;
import org.apache.drill.common.expression.SchemaPath;
+import org.apache.drill.common.logical.FormatPluginConfig;
import org.apache.drill.exec.ExecConstants;
import org.apache.drill.exec.ops.OptimizerRulesContext;
import org.apache.drill.exec.physical.base.AbstractGroupScan;
@@ -49,10 +50,13 @@ import org.apache.drill.exec.server.options.SessionOptionManager;
import org.apache.drill.exec.store.AbstractStoragePlugin;
import org.apache.drill.exec.store.SchemaConfig;
import org.apache.drill.exec.store.StoragePluginOptimizerRule;
+import org.apache.drill.exec.store.dfs.FormatPlugin;
import org.apache.drill.exec.store.hive.schema.HiveSchemaFactory;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.drill.exec.store.mapr.db.MapRDBFormatPlugin;
+import org.apache.drill.exec.store.mapr.db.MapRDBFormatPluginConfig;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
import org.apache.hadoop.hive.metastore.api.MetaException;
@@ -62,6 +66,8 @@ public class HiveStoragePlugin extends AbstractStoragePlugin {
private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HiveStoragePlugin.class);
+ public static final String HIVE_MAPRDB_FORMAT_PLUGIN_NAME = "hive-maprdb";
+
private final HiveStoragePluginConfig config;
private HiveSchemaFactory schemaFactory;
private final HiveConf hiveConf;
@@ -216,4 +222,19 @@ public class HiveStoragePlugin extends AbstractStoragePlugin {
return ruleBuilder.build();
}
+ @Override
+ public FormatPlugin getFormatPlugin(FormatPluginConfig formatConfig) {
+ // TODO: implement formatCreator similar to FileSystemPlugin formatCreator. DRILL-6621
+ if (formatConfig instanceof MapRDBFormatPluginConfig) {
+ try {
+ return new MapRDBFormatPlugin(HIVE_MAPRDB_FORMAT_PLUGIN_NAME, context, hiveConf, config,
+ (MapRDBFormatPluginConfig) formatConfig);
+ } catch (IOException e) {
+ throw new DrillRuntimeException("The error is occurred while connecting to MapR-DB", e);
+ }
+ }
+ throw new DrillRuntimeException(String.format("Hive storage plugin doesn't support usage of %s format plugin",
+ formatConfig.getClass().getName()));
+ }
+
}