类型

Resource

标签

aws_glue_catalog_database

AWS服务

Glue

说明

主要用于创建Glue Catalog Table资源。

样例

简单样例

resource "aws_glue_catalog_table" "aws_glue_catalog_table" {
  name          = "MyCatalogTable"
  database_name = "MyCatalogDatabase"
}

Parquet Table for Athena

resource "aws_glue_catalog_table" "aws_glue_catalog_table" {
  name          = "MyCatalogTable"
  database_name = "MyCatalogDatabase"

  table_type = "EXTERNAL_TABLE"

  parameters = {
    EXTERNAL              = "TRUE"
    "parquet.compression" = "SNAPPY"
  }

  storage_descriptor {
    location      = "s3://my-bucket/event-streams/my-stream"
    input_format  = "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat"
    output_format = "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat"

    ser_de_info {
      name                  = "my-stream"
      serialization_library = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe"

      parameters = {
        "serialization.format" = 1
      }
    }

    columns {
      name = "my_string"
      type = "string"
    }

    columns {
      name = "my_double"
      type = "double"
    }

    columns {
      name    = "my_date"
      type    = "date"
      comment = ""
    }

    columns {
      name    = "my_bigint"
      type    = "bigint"
      comment = ""
    }

    columns {
      name    = "my_struct"
      type    = "struct<my_nested_string:string>"
      comment = ""
    }
  }
}

参数

name:(必选)表的名称。

database_name:(必选)表所在数据库的名称。

catalog_id:(可选)表所在中央元数据存储库catalog的id和数据库名称。如果省略,则默认为AWS帐户ID加上数据库名称。

description:(可选)表的描述。

owner:(可选)表的所有者。

parameters:(可选)定义与此表关联属性的键值对列表。

partition_index:(可选)分区索引配置块。包括如下参数:

  • index_name:(必选)分区索引的名称。
  • keys:(必选)分区索引的分区键。

partition_keys:(可选)分区表的列的配置块,仅支持基本类型作为分区键。包括如下参数:

  • name:(必选)分区键的名称。
  • comment:(可选)分区键的注释。
  • type:(可选)分区键中数据的数据类型。

retention:(可选)此表的保留时间。

storage_descriptor:(可选)记录此表的物理存储的信息的配置块。包括如下参数:

  • bucket_columns:(可选)表中grouping列,clustering列和bucketing列的列表
  • columns:(可选)表中列的配置块。包括如下参数:
    • comment:(可选)列的注释。
    • name:(必选)列名。
    • parameters:(可选)定义与此列关联属性的键值对列表。
    • type:(可选)列数据的数据类型。
  • compressed:(可选)表中的数据是否压缩。
  • input_format:(可选)表的输入格式。可选项SequenceFileInputFormat,TextInputFormat,或者自定义格式。
  • location:(可选)表的物理位置。
  • number_of_buckets:(可选)表中含有维度列,则必选。
  • output_format:(可选)表的输出格式。可选项SequenceFileInputFormat,TextInputFormat,或者自定义格式。
  • parameters:(可选)定义与此表的物理存储的信息关联属性的键值对列表。
  • schema_reference:(可选)记录存储在Glue中表的Schema信息配置块。包含如下参数:
    • schema_id:(可选)Schema信息id配置块。包含如下参数:
      • registry_name:(可选)注册名称。
      • schema_arn:(可选)Schema的arn。schema_arn和schema_name必选其中一个进行填写。
      • schema_name:(可选)Schema的名称。schema_arn和schema_name必选其中一个进行填写。
    • schema_version_id:(可选)Schema信息版本id。
    • schema_version_number:(必选)Schema信息版本号。
  • ser_de_info:(可选)序列化和反序列化(“SerDe”)信息的配置块。包含如下参数:
    • name:(可选)SerDe的名称。
    • parameters:(可选)定义与SerDe关联属性的键值对列表。
    • serialization_library:(可选)实现SerDe的类的全限定名。如:org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
    skewed_info:(可选)记录包含有关列中倾斜值的信息配置块。包含如下参数:
    • skewed_column_names:(可选)表中包含倾斜值的列的列表。
    • skewed_column_value_location_maps:(可选)表中包含倾斜值的值列表。
    • skewed_column_values:(可选)表中倾斜值和倾斜值的列映射关系的列表。
  • sort_columns:(可选)bucket的排列顺序的配置块。包含如下参数:
    • column:(必选)列名。
    • sort_order:(必选)排列顺序规则。按列进行升序(1)排序或者降序(0)排序。
  • stored_as_sub_directories:(可选)表数据是否存储在子目录中。

table_type:(可选)此表的类型(外部表、虚拟视图等)。如果省略,某些Athena DDL查询(如ALTER TABLE和SHOW CREATE TABLE)可能会执行失败。

target_table:(可选)用于资源链接的目标表的配置块。包括如下参数:

  • catalog_id:(必选)目的表所在中央元数据存储库catalog的id。
  • database_name:(必选)目的表所在数据库的名称。
  • name:(必选)目标表名称。

view_expanded_text:(可选)视图的扩展文本;如果该表不为视图否则为空。

view_original_text:(可选)视图的原始文本;如果该表不为视图否则为空。

属性引用

除上述所有参数外,还将访问该资源的以下属性:

arn:表的接入点arn。

id:数据库所在的中央元数据存储库catalog的id、数据库名称和表名称。

资源导入

替换如下命令行中的参数${catalog_id}、${database_name}和${table_name}并运行,可以导入Glue 数据库中对应表:

 $ terraform import aws_glue_catalog_database.database ${catalog_id}:${database_name}:${table_name}