Github user ajantha-bhat commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/3019#discussion_r243849816
  
    --- Diff: 
integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataModule.java
 ---
    @@ -17,62 +17,150 @@
     
     package org.apache.carbondata.presto;
     
    -import javax.inject.Inject;
    +import java.util.function.Supplier;
     
     import static java.util.Objects.requireNonNull;
     
    -import org.apache.carbondata.presto.impl.CarbonTableConfig;
     import org.apache.carbondata.presto.impl.CarbonTableReader;
     
    +import com.facebook.presto.hive.CoercionPolicy;
    +import com.facebook.presto.hive.DirectoryLister;
    +import com.facebook.presto.hive.FileFormatDataSourceStats;
    +import com.facebook.presto.hive.GenericHiveRecordCursorProvider;
    +import com.facebook.presto.hive.HadoopDirectoryLister;
    +import com.facebook.presto.hive.HdfsConfiguration;
    +import com.facebook.presto.hive.HdfsConfigurationUpdater;
    +import com.facebook.presto.hive.HdfsEnvironment;
    +import com.facebook.presto.hive.HiveClientConfig;
    +import com.facebook.presto.hive.HiveClientModule;
    +import com.facebook.presto.hive.HiveCoercionPolicy;
    +import com.facebook.presto.hive.HiveConnectorId;
    +import com.facebook.presto.hive.HiveEventClient;
    +import com.facebook.presto.hive.HiveFileWriterFactory;
    +import com.facebook.presto.hive.HiveHdfsConfiguration;
    +import com.facebook.presto.hive.HiveLocationService;
    +import com.facebook.presto.hive.HiveMetadataFactory;
    +import com.facebook.presto.hive.HiveNodePartitioningProvider;
    +import com.facebook.presto.hive.HivePageSinkProvider;
    +import com.facebook.presto.hive.HivePageSourceFactory;
    +import com.facebook.presto.hive.HivePartitionManager;
    +import com.facebook.presto.hive.HiveRecordCursorProvider;
    +import com.facebook.presto.hive.HiveSessionProperties;
    +import com.facebook.presto.hive.HiveSplitManager;
    +import com.facebook.presto.hive.HiveTableProperties;
    +import com.facebook.presto.hive.HiveTransactionManager;
    +import com.facebook.presto.hive.HiveTypeTranslator;
    +import com.facebook.presto.hive.HiveWriterStats;
    +import com.facebook.presto.hive.LocationService;
    +import com.facebook.presto.hive.NamenodeStats;
    +import com.facebook.presto.hive.OrcFileWriterConfig;
    +import com.facebook.presto.hive.OrcFileWriterFactory;
    +import com.facebook.presto.hive.PartitionUpdate;
    +import com.facebook.presto.hive.RcFileFileWriterFactory;
    +import com.facebook.presto.hive.TableParameterCodec;
    +import com.facebook.presto.hive.TransactionalMetadata;
    +import com.facebook.presto.hive.TypeTranslator;
    +import com.facebook.presto.hive.orc.DwrfPageSourceFactory;
    +import com.facebook.presto.hive.orc.OrcPageSourceFactory;
    +import com.facebook.presto.hive.parquet.ParquetPageSourceFactory;
    +import com.facebook.presto.hive.parquet.ParquetRecordCursorProvider;
    +import com.facebook.presto.hive.rcfile.RcFilePageSourceFactory;
    +import com.facebook.presto.spi.connector.ConnectorNodePartitioningProvider;
    +import com.facebook.presto.spi.connector.ConnectorPageSinkProvider;
     import com.facebook.presto.spi.connector.ConnectorPageSourceProvider;
     import com.facebook.presto.spi.connector.ConnectorSplitManager;
    -import com.facebook.presto.spi.type.Type;
    -import com.facebook.presto.spi.type.TypeManager;
    -import com.fasterxml.jackson.databind.DeserializationContext;
    -import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
     import com.google.inject.Binder;
    -import com.google.inject.Module;
     import com.google.inject.Scopes;
    +import com.google.inject.TypeLiteral;
    +import com.google.inject.multibindings.Multibinder;
    +import io.airlift.event.client.EventClient;
     
    -import static 
com.facebook.presto.spi.type.TypeSignature.parseTypeSignature;
    -import static com.google.common.base.Preconditions.checkArgument;
    +import static com.google.inject.multibindings.Multibinder.newSetBinder;
     import static io.airlift.configuration.ConfigBinder.configBinder;
    +import static io.airlift.json.JsonCodecBinder.jsonCodecBinder;
     
    -public class CarbondataModule implements Module {
    +import static org.weakref.jmx.ObjectNames.generatedNameOf;
    +import static org.weakref.jmx.guice.ExportBinder.newExporter;
    +
    +public class CarbondataModule extends HiveClientModule {
     
       private final String connectorId;
    -  private final TypeManager typeManager;
     
    -  public CarbondataModule(String connectorId, TypeManager typeManager) {
    +  public CarbondataModule(String connectorId) {
    +    super(connectorId);
         this.connectorId = requireNonNull(connectorId, "connector id is null");
    -    this.typeManager = requireNonNull(typeManager, "typeManager is null");
       }
     
       @Override public void configure(Binder binder) {
    -    binder.bind(TypeManager.class).toInstance(typeManager);
    +    binder.bind(HiveConnectorId.class).toInstance(new 
HiveConnectorId(connectorId));
    +    binder.bind(TypeTranslator.class).toInstance(new HiveTypeTranslator());
    +    
binder.bind(CoercionPolicy.class).to(HiveCoercionPolicy.class).in(Scopes.SINGLETON);
     
    -    binder.bind(CarbondataConnectorId.class).toInstance(new 
CarbondataConnectorId(connectorId));
    -    binder.bind(CarbondataMetadata.class).in(Scopes.SINGLETON);
    -    binder.bind(CarbonTableReader.class).in(Scopes.SINGLETON);
    +    binder.bind(HdfsConfigurationUpdater.class).in(Scopes.SINGLETON);
    +    
binder.bind(HdfsConfiguration.class).to(HiveHdfsConfiguration.class).in(Scopes.SINGLETON);
    +    binder.bind(HdfsEnvironment.class).in(Scopes.SINGLETON);
    +    
binder.bind(DirectoryLister.class).to(HadoopDirectoryLister.class).in(Scopes.SINGLETON);
    +    configBinder(binder).bindConfig(HiveClientConfig.class);
    +
    +    binder.bind(HiveSessionProperties.class).in(Scopes.SINGLETON);
    +    binder.bind(HiveTableProperties.class).in(Scopes.SINGLETON);
    +
    +    binder.bind(NamenodeStats.class).in(Scopes.SINGLETON);
    +    newExporter(binder).export(NamenodeStats.class)
    +        .as(generatedNameOf(NamenodeStats.class, connectorId));
    +
    +    Multibinder<HiveRecordCursorProvider> recordCursorProviderBinder =
    +        newSetBinder(binder, HiveRecordCursorProvider.class);
    +    
recordCursorProviderBinder.addBinding().to(ParquetRecordCursorProvider.class)
    +        .in(Scopes.SINGLETON);
    +    
recordCursorProviderBinder.addBinding().to(GenericHiveRecordCursorProvider.class)
    +        .in(Scopes.SINGLETON);
    +
    +    binder.bind(HiveWriterStats.class).in(Scopes.SINGLETON);
    +    newExporter(binder).export(HiveWriterStats.class)
    +        .as(generatedNameOf(HiveWriterStats.class, connectorId));
    +
    +    newSetBinder(binder, 
EventClient.class).addBinding().to(HiveEventClient.class)
    +        .in(Scopes.SINGLETON);
    +    binder.bind(HivePartitionManager.class).in(Scopes.SINGLETON);
    +    
binder.bind(LocationService.class).to(HiveLocationService.class).in(Scopes.SINGLETON);
    +    binder.bind(TableParameterCodec.class).in(Scopes.SINGLETON);
    +    binder.bind(HiveMetadataFactory.class).in(Scopes.SINGLETON);
    +    binder.bind(new TypeLiteral<Supplier<TransactionalMetadata>>() {
    +    }).to(HiveMetadataFactory.class).in(Scopes.SINGLETON);
    +    binder.bind(HiveTransactionManager.class).in(Scopes.SINGLETON);
         
binder.bind(ConnectorSplitManager.class).to(CarbondataSplitManager.class).in(Scopes.SINGLETON);
    +    newExporter(binder).export(ConnectorSplitManager.class)
    +        .as(generatedNameOf(HiveSplitManager.class, connectorId));
         
binder.bind(ConnectorPageSourceProvider.class).to(CarbondataPageSourceProvider.class)
             .in(Scopes.SINGLETON);
    -    binder.bind(CarbondataHandleResolver.class).in(Scopes.SINGLETON);
    -    configBinder(binder).bindConfig(CarbonTableConfig.class);
    -  }
    +    
binder.bind(ConnectorPageSinkProvider.class).to(HivePageSinkProvider.class)
    +        .in(Scopes.SINGLETON);
    +    
binder.bind(ConnectorNodePartitioningProvider.class).to(HiveNodePartitioningProvider.class)
    +        .in(Scopes.SINGLETON);
    +
    +    jsonCodecBinder(binder).bindJsonCodec(PartitionUpdate.class);
     
    -  public static final class TypeDeserializer extends 
FromStringDeserializer<Type> {
    -    private final TypeManager typeManager;
    +    binder.bind(FileFormatDataSourceStats.class).in(Scopes.SINGLETON);
    +    newExporter(binder).export(FileFormatDataSourceStats.class)
    +        .as(generatedNameOf(FileFormatDataSourceStats.class, connectorId));
     
    -    @Inject public TypeDeserializer(TypeManager typeManager) {
    -      super(Type.class);
    -      this.typeManager = requireNonNull(typeManager, "typeManager is 
null");
    -    }
    +    Multibinder<HivePageSourceFactory> pageSourceFactoryBinder =
    +        newSetBinder(binder, HivePageSourceFactory.class);
    +    
pageSourceFactoryBinder.addBinding().to(OrcPageSourceFactory.class).in(Scopes.SINGLETON);
    +    
pageSourceFactoryBinder.addBinding().to(DwrfPageSourceFactory.class).in(Scopes.SINGLETON);
    +    
pageSourceFactoryBinder.addBinding().to(ParquetPageSourceFactory.class).in(Scopes.SINGLETON);
    --- End diff --
    
    why orc and parquet PageSource are used here ? can add comment about this ?


---

Reply via email to