当前位置: 首页 > 知识库问答 >
问题:

使用AWS Athena在AWS胶中复制表

籍英叡
2023-03-14
    null

这些服务都是为了协同工作而设计的,因此必须有一个适当的方法来完成这一点。任何建议都将不胜感激:)

共有1个答案

罗甫
2023-03-14

这样做的方法是使用CTAS查询语句。

create TABLE AS SELECT(CTAS)查询根据另一个查询的SELECT语句的结果在Athena中创建一个新表。Athena将CTAS语句创建的数据文件存储在Amazon S3中的指定位置。

例如:

CREATE TABLE new_table
WITH (
     external_location = 's3://my_athena_results/new_table_files/'
) AS (
    -- Here goes your normal query 
    SELECT 
        *
    FROM 
        old_table;
)
  1. The destination location for storing CTAS query results in Amazon S3 must be empty.
  2. The same applies to the name of new table, i.e. it shouldn't exist in AWS Glue Data Catalog.
  3. In general, you don't have explicit control of how many files will be created as a result of CTAS query, since Athena is a distributed system. However, can try this to use "this workaround" which uses bucketed_by and bucket_count fields within WITH clause
    CREATE TABLE new_table
    WITH (
        external_location = 's3://my_athena_results/new_table_files/',
        bucketed_by=ARRAY['some_column_from_select'],
        bucket_count=1
    ) AS (
        -- Here goes your normal query 
        SELECT 
            *
        FROM 
            old_table;
    )
    

 类似资料:
  • 我已经创建了一个成功执行的AWS胶水作业。但是,我无法在作业中放置任何自定义日志记录。 如何在AWS S3存储桶中创建日志文件,以便跟踪日常作业执行情况? 目前,当我的工作执行时,它会创建默认日志(即火花日志),我可以在AWS云手表中看到它。在AWS胶水中记录事件的最佳实践是什么?

  • 我每天都有csv文件被传递到S3,这些文件在当月是增量的。所以file1包含第1天的数据,file2包含第1天和第2天的数据,等等。每天我都想对该数据运行一个ETL并将其写入不同的S3位置,这样我就可以使用Athena查询它,而不会出现重复的行。本质上,我只想查询聚合数据的最新状态(这只是最近交付给S3的文件的内容)。 我认为书签不会起作用,因为增量交付包含以前文件中的数据,因此会产生重复。我知道

  • 对于要在拼花格式的S3存储桶中的数据上运行的作业,有两种方法: > 使用 由于我的数据方案不会及时更改,使用爬虫程序是否有任何优势(性能方面或其他方面)?在这种情况下,我为什么需要爬虫?

  • 目前有一个AWS胶水作业的问题,读取一个S3集合并将其写入AWS Redshift,其中我们有一列值。

  • 我需要对S3 bucket执行附加加载。 每天都有新的. gz文件被转储到S3位置,胶水爬虫读取数据并在数据曲库中更新它。 Scala AWS Glue作业运行并仅过滤当前日期的数据。 上面过滤的数据按照一些规则进行转换,并创建一个分区的动态数据帧(即年、月、日)级别。 现在,我需要将这个动态数据帧写入到S3 bucket中,其中包含所有前一天的分区。事实上,我只需要将一个分区写入S3存储桶。目前

  • 我发现AWS Glue将Executor的实例设置为内存限制为5 Gb,有时在大数据集上它会因而失败。驱动程序实例。是否有任何选择来增加这个值?