Class TimestreamMetadataHandler

  • All Implemented Interfaces:
    com.amazonaws.services.lambda.runtime.RequestStreamHandler

    public class TimestreamMetadataHandler
    extends GlueMetadataHandler
    • Constructor Detail

      • TimestreamMetadataHandler

        public TimestreamMetadataHandler​(Map<String,​String> configOptions)
      • TimestreamMetadataHandler

        protected TimestreamMetadataHandler​(software.amazon.awssdk.services.timestreamquery.TimestreamQueryClient tsQuery,
                                            software.amazon.awssdk.services.timestreamwrite.TimestreamWriteClient tsMeta,
                                            software.amazon.awssdk.services.glue.GlueClient glue,
                                            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: MetadataHandler
        Used 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:
        doGetDataSourceCapabilities in class MetadataHandler
        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.
      • doListSchemaNames

        public ListSchemasResponse doListSchemaNames​(BlockAllocator blockAllocator,
                                                     ListSchemasRequest request)
                                              throws Exception
        Description copied from class: GlueMetadataHandler
        Returns an unfiltered list of schemas (aka databases) from AWS Glue DataCatalog.
        Overrides:
        doListSchemaNames in class GlueMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        request - Provides details on who made the request and which Athena catalog they are querying.
        Returns:
        The ListSchemasResponse which mostly contains the list of schemas (aka databases).
        Throws:
        Exception
      • doListTables

        public ListTablesResponse doListTables​(BlockAllocator blockAllocator,
                                               ListTablesRequest request)
                                        throws Exception
        Description copied from class: GlueMetadataHandler
        Returns an unfiltered list of tables from AWS Glue DataCatalog for the requested schema (aka database)
        Overrides:
        doListTables in class GlueMetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        request - Provides details on who made the request and which Athena catalog they are querying.
        Returns:
        The ListTablesResponse which mostly contains the list of table names.
        Throws:
        Exception
      • doGetTable

        public GetTableResponse doGetTable​(BlockAllocator blockAllocator,
                                           GetTableRequest request)
                                    throws Exception
        Description copied from class: GlueMetadataHandler
        Attempts to retrieve a Table (columns and properties) from AWS Glue for the request schema (aka database) and table name with no fitlering.
        Overrides:
        doGetTable in class GlueMetadataHandler
        Parameters:
        blockAllocator - 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 mostly containing the columns, their types, and any table properties for the requested table.
        Throws:
        Exception
      • doGetQueryPassthroughSchema

        public GetTableResponse doGetQueryPassthroughSchema​(BlockAllocator allocator,
                                                            GetTableRequest request)
                                                     throws Exception
        Description copied from class: MetadataHandler
        Used to get definition (field names, types, descriptions, etc...) of a Query PassThrough.
        Overrides:
        doGetQueryPassthroughSchema in class MetadataHandler
        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
      • getPartitions

        public void getPartitions​(BlockWriter blockWriter,
                                  GetTableLayoutRequest request,
                                  QueryStatusChecker queryStatusChecker)
                           throws Exception
        Our table doesn't support complex layouts or partitioning so we simply make this method a NoOp.
        Specified by:
        getPartitions in class MetadataHandler
        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
        See Also:
        GlueMetadataHandler
      • doGetSplits

        public GetSplitsResponse doGetSplits​(BlockAllocator allocator,
                                             GetSplitsRequest request)
                                      throws Exception
        Description copied from class: MetadataHandler
        Used to split-up the reads required to scan the requested batch of partition(s).
        Specified by:
        doGetSplits in class MetadataHandler
        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