为什么我的Kinesis Analytics应用程序架构发现不起作用?

时间:2019-07-09 17:09:50

标签: amazon-web-services amazon-kinesis

我正在将逗号分隔的数据发送到我的kinesis流,并且我希望我的kinesis分析应用程序能够识别出两列(均为bigints)。但是,当我用一些记录填充流并单击“发现模式”时,它总是为我提供一列的模式!这是屏幕截图:

我尝试了许多不同的定界符来指示列,包括逗号,空格和逗号空间,但是这些都不引起aws正确检测我的模式。有一次我放弃并手动编辑了模式,这导致了这个错误:

虽然我知道我可以选择将架构保留为单列,并使用字符串和日期时间操作来构造我的数据,但我不希望这样做……有什么建议吗?

2 个答案:

答案 0 :(得分:0)

虽然我无法使模式发现工具正常工作,但我意识到我能够手动编辑模式,并且运行良好。之所以出现该错误,是因为最初只是填充流,而没有连续发送数据。

答案 1 :(得分:0)

模式发现要求我在模式发现期间将数据发送到我的输入运动流。为了对我的概念验证应用程序执行此操作,我使用了 AWS CLI:

# emittokinesis.sh
JSON='{
    "messageId": "31c14ee7-9bde-484d-af05-03509c2c33aa",
    "myTest": "myValue"
}'
echo "$JSON"
JSONBASE64=$(echo ${JSON} | base64)

echo 'aws kinesis put-record --stream-name logstash-input-test --partition-key 1 --data "'${JSONBASE64}'"'
aws kinesis put-record --stream-name logstash-input-test --partition-key 1 --data "${JSONBASE64}"

我在 AWS UI 中单击了“运行架构发现”按钮,然后在 CMD 窗口中快速运行了我的 shell 脚本。

一旦发现我的初始架构,我就可以手动编辑架构,但它与我基于输入 JSON 的预期基本相符。