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

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

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

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

使用控制台运行架构发现

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

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

  2. 选择Connect 参考数据在 Kinesis Data Analytics 控制台的应用程序主页面中。

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

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

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

使用 API 运行架构发现

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

要使用 Amazon S3 对象生成架构DiscoverInputSchemaAPI

  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. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/。创建具有 AmazonS3ReadOnlyAccess 策略的角色。记下新角色的 ARN。有关创建角色的信息,请参阅创建向 Amazon Service 委派权限的角色. 有关如何将策略添加到角色的信息,请参阅修改角色

  6. 运行以下命令DiscoverInputSchema中的命令Amazon CLI,替换您的 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" ] ] }