针对静态数据使用架构发现功能 - Amazon Kinesis Data Analytics for SQL 应用程序开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

针对静态数据使用架构发现功能

架构发现功能可以根据流中的数据或 Amazon S3 存储桶上存储的静态文件中的数据生成架构。假设您要为 Kinesis Data Analytics 应用程序生成架构以进行引用,或者实时流数据不可用。您可以对包含示例数据(采用流或引用数据的预期格式)的静态文件使用架构发现功能。Kinesis Data Analytics 可以对 Amazon S3 存储桶中存储的 JSON 或 CSV 文件中的示例数据运行架构发现。要针对数据文件使用架构发现功能,需使用控制台或指定了 DiscoverInputSchema 参数的 S3Configuration API。

使用控制台运行架构发现

要使用控制台对静态文件运行发现功能,请执行以下操作:

  1. 向 S3 存储桶添加引用数据对象。

  2. 在 Kinesis Data Analytics 控制台的应用程序主页面中选择 Connect reference data (连接引用数据)

  3. 提供存储桶、路径和 IAM 角色数据以访问包含引用数据的 Amazon S3 对象。

  4. 选择 Discover schema (发现架构)

有关如何在控制台中添加引用数据和发现架构的更多信息,请参阅示例:将参考数据添加到A Kinesis Data Analytics 应用

使用 API 运行架构发现

要使用 API 针对静态文件运行发现,您需要为 API 提供具有以下信息的 S3Configuration 结构:

使用 DiscoverInputSchema API 通过 Amazon S3 对象生成架构

  1. 确保您设置了 AWS CLI。有关更多信息,请参阅“入门”部分中的步骤 2. 设置 AWS Command Line Interface (AWS CLI)

  2. 使用以下内容创建名为 data.csv 的文件。

    year,month,state,producer_type,energy_source,units,consumption 2001,1,AK,TotalElectricPowerIndustry,Coal,ShortTons,47615 2001,1,AK,ElectricGeneratorsElectricUtilities,Coal,ShortTons,16535 2001,1,AK,CombinedHeatandPowerElectricPower,Coal,ShortTons,22890 2001,1,AL,TotalElectricPowerIndustry,Coal,ShortTons,3020601 2001,1,AL,ElectricGeneratorsElectricUtilities,Coal,ShortTons,2987681
  3. 登录到 Amazon S3 控制台 (https://console.amazonaws.cn/s3/)。

  4. 创建一个 Amazon S3 存储桶,并上传您创建的 data.csv 文件。请记下所创建存储桶的 ARN。有关创建 Amazon S3 存储桶并上传文件的信息,请参阅 Amazon Simple Storage Service 入门

  5. 访问 https://console.amazonaws.cn/iam/,打开 IAM 控制台。创建具有 AmazonS3ReadOnlyAccess 策略的角色。记下新角色的 ARN。有关创建角色的更多信息,请参阅创建向 AWS 服务委托权限的角色。有关如何将策略添加到角色的信息,请参阅修改角色

  6. 在 AWS CLI 中运行以下 DiscoverInputSchema 命令,并替换您的 Amazon S3 存储桶和 IAM 角色的 ARN:

    $aws kinesisanalytics discover-input-schema --s3-configuration '{ "RoleARN": "arn:aws:iam::123456789012:role/service-role/your-IAM-role", "BucketARN": "arn:aws:s3:::your-bucket-name", "FileKey": "data.csv" }'
  7. 响应类似于以下内容。

    { "InputSchema": { "RecordEncoding": "UTF-8", "RecordColumns": [ { "SqlType": "INTEGER", "Name": "COL_year" }, { "SqlType": "INTEGER", "Name": "COL_month" }, { "SqlType": "VARCHAR(4)", "Name": "state" }, { "SqlType": "VARCHAR(64)", "Name": "producer_type" }, { "SqlType": "VARCHAR(4)", "Name": "energy_source" }, { "SqlType": "VARCHAR(16)", "Name": "units" }, { "SqlType": "INTEGER", "Name": "consumption" } ], "RecordFormat": { "RecordFormatType": "CSV", "MappingParameters": { "CSVMappingParameters": { "RecordRowDelimiter": "\r\n", "RecordColumnDelimiter": "," } } } }, "RawInputRecords": [ "year,month,state,producer_type,energy_source,units,consumption\r\n2001,1,AK,TotalElectricPowerIndustry,Coal,ShortTons,47615\r\n2001,1,AK,ElectricGeneratorsElectricUtilities,Coal,ShortTons,16535\r\n2001,1,AK,CombinedHeatandPowerElectricPower,Coal,ShortTons,22890\r\n2001,1,AL,TotalElectricPowerIndustry,Coal,ShortTons,3020601\r\n2001,1,AL,ElectricGeneratorsElectricUtilities,Coal,ShortTons,2987681" ], "ParsedInputRecords": [ [ null, null, "state", "producer_type", "energy_source", "units", null ], [ "2001", "1", "AK", "TotalElectricPowerIndustry", "Coal", "ShortTons", "47615" ], [ "2001", "1", "AK", "ElectricGeneratorsElectricUtilities", "Coal", "ShortTons", "16535" ], [ "2001", "1", "AK", "CombinedHeatandPowerElectricPower", "Coal", "ShortTons", "22890" ], [ "2001", "1", "AL", "TotalElectricPowerIndustry", "Coal", "ShortTons", "3020601" ], [ "2001", "1", "AL", "ElectricGeneratorsElectricUtilities", "Coal", "ShortTons", "2987681" ] ] }