简体   繁体   English

行未添加到 AWS Kinesis 分析 Kinesis 数据流的应用程序内 SQL 流

[英]Rows are not getting added on AWS Kinesis analytics In-application SQL stream from Kinesis data stream

I am writing data to a kinesis stream on the invocation of a dynamoDBTrigger .我正在调用dynamoDBTrigger将数据写入运动流。 This stream is configured as the input stream to a kinesis analytics application.此流被配置为 kinesis 分析应用程序的输入流。 I have a lambda preprocessor configured on the kinesis stream that logs the data that is written in the stream.我在 kinesis 流上配置了一个 lambda 预处理器,用于记录写入流中的数据。 However, on the analytics application window in the source tab the message No rows in source stream comes up.但是,在源选项卡的分析应用程序窗口中,会出现消息源流中没有行 The rows do not created in the in-application sql stream.这些行不在应用程序内的 sql 流中创建。

I am using Node and deploying the service using a serverless.yml file.我正在使用 Node 并使用serverless.yml文件部署服务。 Here are the configurations -以下是配置 -

RecordKinesisAnalyticsApp: Type: AWS::KinesisAnalytics::Application Properties: ApplicationName: RecordKinesisAnalyticsApp ApplicationDescription: RecordKinesisAnalyticsApp ApplicationCode: ${file(./serverless/metadataQueries.yml):AnalyticsQuery_1} Inputs: - NamePrefix: "RecordPrefix" InputSchema: RecordColumns: - Name: "USER_ID" SqlType: "VARCHAR(20)" Mapping: "$._userId" - Name: "ANXIETY" SqlType: "INTEGER" Mapping: "$.anxiety" RecordEncoding: "UTF-8" RecordFormat: RecordFormatType: "JSON" KinesisStreamsInput: ResourceARN: Fn::GetAtt: - RecordKinesisInputStream - Arn RoleARN: arn:aws:iam::xxxxxxxxxxx:role/service-role/kinesis-analytics-KinesisDemo-us-east-1 This is the analytics query - RecordKinesisAnalyticsApp: Type: AWS::KinesisAnalytics::Application Properties: ApplicationName: RecordKinesisAnalyticsApp ApplicationDescription: RecordKinesisAnalyticsApp ApplicationCode: ${file(./serverless/metadataQueries.yml):AnalyticsQuery_1} Inputs: - NamePrefix: "RecordPrefix" InputSchema: RecordColumns: - Name: "USER_ID" SqlType: "VARCHAR(20)" Mapping: "$._userId" - Name: "ANXIETY" SqlType: "INTEGER" Mapping: "$.anxiety" RecordEncoding: "UTF-8" RecordFormat: RecordFormatType: "JSON" KinesisStreamsInput: ResourceARN: Fn::GetAtt: - RecordKinesisInputStream - Arn RoleARN: arn:aws:iam::xxxxxxxxxxx:role/service-role/kinesis-analytics-KinesisDemo-us-east-1这是分析查询 -

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM " (USER_ID VARCHAR(20), ANXIETY INTEGER); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM USER_ID, ANXIETY FROM "RecordPrefix_001" WHERE ANXIETY >= 0; 在此处输入图像描述

在此处输入图像描述

I think this is because of your quotations .我想这是因为你的报价 AWS Console (by default, even if you don't see it) and you in your code used "USER_ID" , "ANXIETY" and so forth. AWS 控制台(默认情况下,即使您看不到它)并且您在代码中使用了"USER_ID""ANXIETY"等等。 So your SQL code must also use quotations:所以你的 SQL 代码也必须使用引号:

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM ("USER_ID" VARCHAR(20), "ANXIETY" INTEGER);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"
    SELECT STREAM "USER_ID", "ANXIETY"
    FROM "RecordPrefix_001" 
    WHERE "ANXIETY" >= 0;

From docs :来自文档

Kinesis Data Analytics adds quotation marks around the identifiers (stream name and column names) when creating the input in-application stream. Kinesis Data Analytics 在创建输入应用程序内流时在标识符(流名称和列名称)周围添加引号 When querying this stream and the columns, you must specify them in quotation marks using the same casing (matching lowercase and uppercase letters exactly).查询此流和列时,必须使用相同的大小写在引号中指定它们(完全匹配小写和大写字母)。 For more information about identifiers, see Identifiers in the Amazon Kinesis Data Analytics SQL Reference.有关标识符的更多信息,请参阅 Amazon Kinesis Data Analytics SQL 参考中的标识符。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM