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

对于新项目,建议您使用新的适用于 Apache Flink Studio 的托管服务,而不是使用适用于 SQL 应用程序的 Kinesis Data Analytics。Managed Service for Apache Flink Studio 不仅操作简单,还具有高级分析功能,使您能够在几分钟内构建复杂的流处理应用程序。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

注意

2023 年 9 月 12 日之后,如果您尚未使用适用于 SQL 的 Kinesis Data Analytics,则将无法使用 Kinesis Data Firehose 作为来源创建新应用程序。有关更多信息,请参阅限制

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

使用控制台运行架构发现

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

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

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

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

  4. 选择 发现架构

有关如何在控制台中添加引用数据和发现架构的更多信息,请参阅示例:在 应用程序中添加引用数据

使用 API 运行架构发现

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

使用 DiscoverInputSchema API 根据 Amazon S3 对象生成架构
  1. 确保您已完成 Amazon CLI 设置。有关更多信息,请参阅“入门”部分中的步骤 2:设置 Amazon Command Line Interface (Amazon 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.aws.amazon.com/s3/

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

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

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

    $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" ] ] }