Class InfluxDBMetadataHandler
- java.lang.Object
-
- com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
-
- com.amazonaws.athena.connectors.influxdb.InfluxDBMetadataHandler
-
- All Implemented Interfaces:
FederationRequestHandler,com.amazonaws.services.lambda.runtime.RequestStreamHandler
public class InfluxDBMetadataHandler extends MetadataHandler
-
-
Field Summary
-
Fields inherited from class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
configOptions, DISABLE_SPILL_ENCRYPTION, KMS_KEY_ID_ENV, SPILL_BUCKET_ENV, SPILL_PREFIX_ENV
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedInfluxDBMetadataHandler(InfluxDBConnectionFactory connectionFactory, EncryptionKeyFactory keyFactory, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, String spillBucket, String spillPrefix, Map<String,String> configOptions)InfluxDBMetadataHandler(Map<String,String> configOptions)Creates a handler with its own connection factory.InfluxDBMetadataHandler(Map<String,String> configOptions, InfluxDBConnectionFactory connectionFactory)Creates a handler that uses a connection factory shared with anInfluxDBRecordHandlerin the same Lambda container.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description GetDataSourceCapabilitiesResponsedoGetDataSourceCapabilities(BlockAllocator allocator, GetDataSourceCapabilitiesRequest request)Used to describe the types of capabilities supported by a data source.GetTableResponsedoGetQueryPassthroughSchema(BlockAllocator allocator, GetTableRequest request)Derives the result schema for a query passthrough by running the native query and inspecting the Arrow schema of its first result batch.GetSplitsResponsedoGetSplits(BlockAllocator allocator, GetSplitsRequest request)Used to split-up the reads required to scan the requested batch of partition(s).GetTableResponsedoGetTable(BlockAllocator allocator, GetTableRequest request)Used to get definition (field names, types, descriptions, etc...) of a Table.ListSchemasResponsedoListSchemaNames(BlockAllocator allocator, ListSchemasRequest request)Used to get the list of schemas (aka databases) that this source contains.ListTablesResponsedoListTables(BlockAllocator allocator, ListTablesRequest request)Used to get the list of tables that this source contains.voidenhancePartitionSchema(SchemaBuilder partitionSchemaBuilder, GetTableLayoutRequest request)This method can be used to add additional fields to the schema of our partition response.voidgetPartitions(BlockWriter blockWriter, GetTableLayoutRequest request, QueryStatusChecker queryStatusChecker)Used to get the partitions that must be read from the request table in order to satisfy the requested predicate.booleanparallelismEnabled()-
Methods inherited from class com.amazonaws.athena.connector.lambda.handlers.MetadataHandler
doGetTableLayout, doHandleRequest, doPing, getCachableSecretsManager, getKmsEncryptionProvider, handleRequest, makeEncryptionKey, makeEncryptionKey, makeSpillLocation, onPing
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.amazonaws.athena.connector.lambda.handlers.FederationRequestHandler
createCredentialsProvider, getAthenaClient, getCredentialProvider, getCredentialProvider, getDatabaseConnectionSecret, getRequestOverrideConfig, getRequestOverrideConfig, getRequestOverrideConfig, getS3Client, getSecret, getSecret, getSessionCredentials, isRequestFederated, resolveSecrets, resolveWithDefaultCredentials
-
-
-
-
Constructor Detail
-
InfluxDBMetadataHandler
public InfluxDBMetadataHandler(Map<String,String> configOptions)
Creates a handler with its own connection factory. Used when the metadata handler is deployed as its own Lambda handler.
-
InfluxDBMetadataHandler
public InfluxDBMetadataHandler(Map<String,String> configOptions, InfluxDBConnectionFactory connectionFactory)
Creates a handler that uses a connection factory shared with anInfluxDBRecordHandlerin the same Lambda container. The record handler resolves the factory's secrets.
-
InfluxDBMetadataHandler
protected InfluxDBMetadataHandler(InfluxDBConnectionFactory connectionFactory, EncryptionKeyFactory keyFactory, software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager, software.amazon.awssdk.services.athena.AthenaClient athena, String spillBucket, String spillPrefix, Map<String,String> configOptions)
-
-
Method Detail
-
doGetDataSourceCapabilities
public GetDataSourceCapabilitiesResponse doGetDataSourceCapabilities(BlockAllocator allocator, GetDataSourceCapabilitiesRequest request)
Description copied from class:MetadataHandlerUsed to describe the types of capabilities supported by a data source. An engine can use this to determine what portions of the query to push down. A connector that returns any optimization will guarantee that the associated predicate will be pushed down.- Overrides:
doGetDataSourceCapabilitiesin classMetadataHandler- Parameters:
allocator- Tool for creating and managing Apache Arrow Blocks.request- Provides details about the catalog being used.- Returns:
- A GetDataSourceCapabilitiesResponse object which returns a map of supported optimizations that the connector is advertising to the consumer. The connector assumes all responsibility for whatever is passed here.
-
doGetQueryPassthroughSchema
public GetTableResponse doGetQueryPassthroughSchema(BlockAllocator allocator, GetTableRequest request) throws Exception
Derives the result schema for a query passthrough by running the native query and inspecting the Arrow schema of its first result batch.InfluxDBTypeMappermaps the column types, the same mapping thatdoGetTable(com.amazonaws.athena.connector.lambda.data.BlockAllocator, com.amazonaws.athena.connector.lambda.metadata.GetTableRequest)uses, so a column has the same Athena type on both paths.- Overrides:
doGetQueryPassthroughSchemain classMetadataHandler- Parameters:
allocator- Tool for creating and managing Apache Arrow Blocks.request- Provides details on who made the request and which Athena catalog, database, and table they are querying.- Returns:
- A GetTableResponse which primarily contains:
1. An Apache Arrow Schema object describing the table's columns, types, and descriptions.
2. A Set
of partition column names (or empty if the table isn't partitioned). - Throws:
Exception
-
doListSchemaNames
public ListSchemasResponse doListSchemaNames(BlockAllocator allocator, ListSchemasRequest request) throws Exception
Description copied from class:MetadataHandlerUsed to get the list of schemas (aka databases) that this source contains.- Specified by:
doListSchemaNamesin classMetadataHandler- Parameters:
allocator- Tool for creating and managing Apache Arrow Blocks.request- Provides details on who made the request and which Athena catalog they are querying.- Returns:
- A ListSchemasResponse which primarily contains a Set
of schema names and a catalog name corresponding the Athena catalog that was queried. - Throws:
Exception
-
doListTables
public ListTablesResponse doListTables(BlockAllocator allocator, ListTablesRequest request) throws Exception
Description copied from class:MetadataHandlerUsed to get the list of tables that this source contains.- Specified by:
doListTablesin classMetadataHandler- Parameters:
allocator- Tool for creating and managing Apache Arrow Blocks.request- Provides details on who made the request and which Athena catalog and database they are querying.- Returns:
- A ListTablesResponse which primarily contains a List
enumerating the tables in this catalog, database tuple. It also contains the catalog name corresponding the Athena catalog that was queried. - Throws:
Exception
-
doGetTable
public GetTableResponse doGetTable(BlockAllocator allocator, GetTableRequest request) throws Exception
Description copied from class:MetadataHandlerUsed to get definition (field names, types, descriptions, etc...) of a Table.- Specified by:
doGetTablein classMetadataHandler- Parameters:
allocator- Tool for creating and managing Apache Arrow Blocks.request- Provides details on who made the request and which Athena catalog, database, and table they are querying.- Returns:
- A GetTableResponse which primarily contains:
1. An Apache Arrow Schema object describing the table's columns, types, and descriptions.
2. A Set
of partition column names (or empty if the table isn't partitioned). - Throws:
Exception
-
enhancePartitionSchema
public void enhancePartitionSchema(SchemaBuilder partitionSchemaBuilder, GetTableLayoutRequest request)
This method can be used to add additional fields to the schema of our partition response. Athena expects each partitions in the response to have a column corresponding to your partition columns. You can choose to add additional columns to that response which Athena will ignore but will pass on to you when it call GetSplits(...) for each partition.- Overrides:
enhancePartitionSchemain classMetadataHandler- Parameters:
partitionSchemaBuilder- The SchemaBuilder you can use to add additional columns and metadata to the partitions response.request- The GetTableLayoutResquest that triggered this call.
-
parallelismEnabled
public boolean parallelismEnabled()
-
getPartitions
public void getPartitions(BlockWriter blockWriter, GetTableLayoutRequest request, QueryStatusChecker queryStatusChecker) throws Exception
Description copied from class:MetadataHandlerUsed to get the partitions that must be read from the request table in order to satisfy the requested predicate.- Specified by:
getPartitionsin classMetadataHandler- Parameters:
blockWriter- Used to write rows (partitions) into the Apache Arrow response.request- Provides details of the catalog, database, and table being queried as well as any filter predicate.queryStatusChecker- A QueryStatusChecker that you can use to stop doing work for a query that has already terminated- Throws:
Exception
-
doGetSplits
public GetSplitsResponse doGetSplits(BlockAllocator allocator, GetSplitsRequest request) throws Exception
Description copied from class:MetadataHandlerUsed to split-up the reads required to scan the requested batch of partition(s).- Specified by:
doGetSplitsin classMetadataHandler- Parameters:
allocator- Tool for creating and managing Apache Arrow Blocks.request- Provides details of the catalog, database, table, andpartition(s) being queried as well as any filter predicate.- Returns:
- A GetSplitsResponse which primarily contains:
1. A Set
which represent read operations Amazon Athena must perform by calling your read function. 2. (Optional) A continuation token which allows you to paginate the generation of splits for large queries. - Throws:
Exception
-
-