AWS Glue’s Integration with Amazon Athena and Amazon Redshift

AWS Glue @ Freshers.in

AWS Glue, a fully managed extract, transform, and load (ETL) service, plays a pivotal role in orchestrating data workflows. Let’s explore how AWS Glue integrates with Amazon Athena and Amazon Redshift, two key services in the AWS ecosystem, through practical examples.

1. Integration with Amazon Athena:

Amazon Athena allows you to analyze data in Amazon S3 using standard SQL queries. AWS Glue simplifies the process of cataloging data stored in Amazon S3, making it accessible to Athena for analysis.

Example 1: Cataloging Data with AWS Glue for Amazon Athena

Suppose we have a dataset stored in Amazon S3 containing sales records. We’ll use AWS Glue to catalog this data, enabling Athena to query it seamlessly.

import boto3
# Initialize Glue client
glue_client = boto3.client('glue')

# Cataloging data in Amazon S3
response = glue_client.create_database(
    DatabaseInput={
        'Name': 'sales_database'
    }
)
response = glue_client.create_table(
    DatabaseName='sales_database',
    TableInput={
        'Name': 'sales_table',
        'StorageDescriptor': {
            'Location': 's3://freshers-in/book-sales_data/',
            'Columns': [
                {'Name': 'product_id', 'Type': 'int'},
                {'Name': 'sales_amount', 'Type': 'float'},
                {'Name': 'sale_date', 'Type': 'string'}
            ]
        }
    }
)

print("Data cataloged successfully.")

Output:

Data cataloged successfully.

With this, the sales data is cataloged in AWS Glue, ready for analysis using Amazon Athena.

2. Integration with Amazon Redshift:

Amazon Redshift is a fully managed data warehouse service that allows you to analyze large datasets using SQL queries. AWS Glue simplifies the process of loading data into Redshift, enabling efficient analytics.

Example 2: Loading Data into Amazon Redshift with AWS Glue

Consider we have a dataset in Amazon S3 containing customer information. We’ll utilize AWS Glue to transform and load this data into Amazon Redshift for analysis.

# Loading data into Amazon Redshift
response = glue_client.create_connection(
    ConnectionInput={
        'Name': 'redshift_connection',
        'ConnectionType': 'JDBC',
        'ConnectionProperties': {
            'JDBC_CONNECTION_URL': 'jdbc:redshift://freshers-in-endpoint:5439/freshers_db',
            'USERNAME': 'admin_freshers',
            'PASSWORD': 'T342$sdSDfe'
        }
    }
)
response = glue_client.create_job(
    Name='load_data_into_redshift',
    Role='AWSGlueServiceRole',
    Command={
        'Name': 'glueetl',
        'ScriptLocation': 's3://freshers-in/freshers-glue_scripts/load_data_into_redshift.py'
    },
    Connections={
        'Connections': [
            'redshift_connection'
        ]
    }
)
print("Data loading job created successfully.")

Output:

Data loading job created successfully.

With this setup, AWS Glue orchestrates the transformation and loading of data from Amazon S3 into Amazon Redshift, facilitating efficient data analytics.

Read more articles

  1. AWS Glue
  2. PySpark Blogs
  3. Bigdata Blogs
Author: user