Amazon redshift 如何以编程方式读取AWS Glue数据目录表模式

Amazon redshift 如何以编程方式读取AWS Glue数据目录表模式,amazon-redshift,aws-glue,Amazon Redshift,Aws Glue,我有一套统一结构的每日CSV文件,我将上传到S3。有一个下游作业将CSV数据加载到红移数据库表中。CSV中的列数可能会增加,从那时起,新文件中会包含新列。发生这种情况时,我希望检测更改并自动将列添加到目标红移表中 我的计划是在源CSV文件上运行胶水爬虫。模式中的任何更改都会在Glue数据目录中生成新版本的表。然后,我希望使用Java、.NET或其他语言以编程方式读取Glue数据目录中表的最新版本的表结构(列及其数据类型),并将其与红移表的模式进行比较。如果发现新的列,我将生成一个DDL语句来更改

我有一套统一结构的每日CSV文件,我将上传到S3。有一个下游作业将CSV数据加载到红移数据库表中。CSV中的列数可能会增加,从那时起,新文件中会包含新列。发生这种情况时,我希望检测更改并自动将列添加到目标红移表中

我的计划是在源CSV文件上运行胶水爬虫。模式中的任何更改都会在Glue数据目录中生成新版本的表。然后,我希望使用Java、.NET或其他语言以编程方式读取Glue数据目录中表的最新版本的表结构(列及其数据类型),并将其与红移表的模式进行比较。如果发现新的列,我将生成一个DDL语句来更改红移表以添加列


有人能告诉我一些使用Java、.NET或其他语言读取Glue数据目录表的例子吗?是否有更好的方法自动将新列添加到红移表中?

如果要使用Java,请使用依赖项:

<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk-glue</artifactId>
  <version>{VERSION}</version>
</dependency>

亚马逊网站
和物体

您也可以使用


希望这有帮助。

您好,我可以使用boto3以编程方式更改Glue Catalog表的模式吗?
AWSGlue client = AWSGlueClientBuilder.defaultClient();
GetTableVersionsRequest tableVersionsRequest = new GetTableVersionsRequest()
    .withDatabaseName("glue_catalog_database_name")
    .withCatalogId("table_name_generated_by_crawler");
GetTableVersionsResult results = client.getTableVersions(tableVersionsRequest);
// Here you have all the table versions, at this point you can check for new ones
List<TableVersion> versions = results.getTableVersions();
// Here's how to get to the table columns
List<Column> tableColumns = versions.get(0).getTable().getStorageDescriptor().getColumns();