@Override
 public AbstractGroupScan getPhysicalScan(JSONOptions selection) throws IOException {
   FormatSelection formatSelection = selection.getWith(context.getConfig(), FormatSelection.class);
   FormatPlugin plugin;
   if (formatSelection.getFormat() instanceof NamedFormatPluginConfig) {
     plugin = formatsByName.get(((NamedFormatPluginConfig) formatSelection.getFormat()).name);
   } else {
     plugin = formatPluginsByConfig.get(formatSelection.getFormat());
   }
   if (plugin == null)
     throw new IOException(
         String.format(
             "Failure getting requested format plugin named '%s'.  It was not one of the format plugins registered.",
             formatSelection.getFormat()));
   return plugin.getGroupScan(formatSelection.getSelection());
 }
  public FileSystemPlugin(FileSystemConfig config, DrillbitContext context, String name)
      throws ExecutionSetupException {
    try {
      this.config = config;
      this.context = context;

      Configuration fsConf = new Configuration();
      fsConf.set(FileSystem.FS_DEFAULT_NAME_KEY, config.connection);
      fsConf.set("fs.classpath.impl", ClassPathFileSystem.class.getName());
      fsConf.set("fs.drill-local.impl", LocalSyncableFileSystem.class.getName());
      this.fs = FileSystemCreator.getFileSystem(context.getConfig(), fsConf);
      this.formatsByName = FormatCreator.getFormatPlugins(context, fs, config);
      List<FormatMatcher> matchers = Lists.newArrayList();
      formatPluginsByConfig = Maps.newHashMap();
      for (FormatPlugin p : formatsByName.values()) {
        matchers.add(p.getMatcher());
        formatPluginsByConfig.put(p.getConfig(), p);
      }

      List<WorkspaceSchemaFactory> factories = null;
      if (config.workspaces == null || config.workspaces.isEmpty()) {
        factories =
            Collections.singletonList(
                new WorkspaceSchemaFactory(this, "default", name, fs, "/", matchers));
      } else {
        factories = Lists.newArrayList();
        for (Map.Entry<String, String> space : config.workspaces.entrySet()) {
          factories.add(
              new WorkspaceSchemaFactory(
                  this, space.getKey(), name, fs, space.getValue(), matchers));
        }
      }
      this.schemaFactory = new FileSystemSchemaFactory(name, factories);
    } catch (IOException e) {
      throw new ExecutionSetupException("Failure setting up file system plugin.", e);
    }
  }
 @Override
 public InfoSchemaGroupScan getPhysicalScan(JSONOptions selection) throws IOException {
   SelectedTable table = selection.getWith(context.getConfig(), SelectedTable.class);
   return new InfoSchemaGroupScan(table);
 }
示例#4
0
 public DrillConfig getConfig() {
   return drillbitContext.getConfig();
 }