Aws lambda 在S3JSON GZIP数据上运行后,Glue Crawler从表中排除了许多文件

Aws lambda 在S3JSON GZIP数据上运行后,Glue Crawler从表中排除了许多文件,aws-lambda,amazon-kinesis,amazon-athena,aws-glue,amazon-kinesis-firehose,Aws Lambda,Amazon Kinesis,Amazon Athena,Aws Glue,Amazon Kinesis Firehose,我有一个lambda,它从负载平衡器接收json数据,然后用PUT将每个单独的json记录写入一个kinesis流。kinesis流是kinesis消防软管的生产商,该消防软管将GZIP沉积到前缀为“raw”的S3桶中。JSON记录示例: {"level":"INFO","hash":"3c351293-11e3-4e32-baa2- bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- c38c3dab4848",

我有一个lambda,它从负载平衡器接收json数据,然后用PUT将每个单独的json记录写入一个kinesis流。kinesis流是kinesis消防软管的生产商,该消防软管将GZIP沉积到前缀为“raw”的S3桶中。JSON记录示例:

{"level":"INFO","hash":"3c351293-11e3-4e32-baa2- 
bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- 
c38c3dab4848","event_type":"MELT_DOWN","payload":{"checking": "true"}}
我在生成的lambda中创建了一个x射线跟踪,因此我知道有多少PUT请求(因此每个单独的JSON记录)。在这段时间内,我打开了这个摄取,我发送了大约18000条记录到kinesis stream。当我在前缀为“raw”的表上运行爬虫程序时(我使用默认设置,但在“爬虫程序输出”部分“使用表中的元数据更新所有新的和现有的分区”。以避免配置单元分区与架构不匹配。爬虫程序运行并成功检测架构,如下所示:

column . data type
level .  string
hash     string
source .  string
hat_name string
event_type string
payload string .    <--- (only nested json field that has lots of possible internal structure)
parition_0  string
partition_1 string
partition_2 string
partition_3 string
在glue中,我需要做什么才能将所有记录加载到表中,我应该有18000条记录,而不是4200条记录?我认为一个问题是模式可能与某些记录不匹配?但我在kinesis producer中验证了它是一个具有适当顶级字段的有效json结构。我看到的第二个问题是带有截断jso的文件n记录?我想这可能是firehose批处理文件的问题?非常感谢您的帮助


注意:我已经尝试手动创建定义所有顶级字段的json表,但我仍然有相同的问题,当我在athena中查询时,它只会找到大约4200个条目。

好的,我已经解决了这个问题,所以我将与大家分享,以防其他人有这个问题。因为爬虫程序使用Hive json SerDe来处理json数据,大多数commonly事件。这些事件表示为JSON编码的文本块,用新行分隔。记录没有用新行字符分隔,因此为了修复问题,我在每次放入kinesis之前都附加了新行。可以解释一下您是如何添加新行字符的吗?我们有JSON文件,这些文件正在通过粘附到cr进行爬网也可以创建Athena表,但我们得到的是相同的
“某些文件与检测到的架构不匹配。请从爬虫程序中删除或排除以下文件”
错误。@CorerMaximus您需要做的是在将记录写入kinesis或kinesis firehose时,确保每个json文档都附加了“\n”这将成为SerDe所需的delimeter。因此示例{“hat”:“tophat”}+“\n”好的,我已经解决了这个问题,所以我将与大家分享,以防其他人有这个问题。因为爬虫程序使用Hive JSON SerDe来处理JSON数据,最常见的是事件。这些事件表示为JSON编码的文本块,用新行分隔。记录没有用新行字符分隔,所以为了解决这个问题,我附加了在每次放入kinesis之前添加新行。是否可以解释您是如何添加新行字符的?我们有json文件,这些文件也正在通过胶水进行爬网以创建Athena表,但我们得到的是相同的
“一些文件与检测到的架构不匹配。从爬网程序中删除或排除以下文件”
error.@CorerMaximus您需要做的是当您将记录写入kinesis或kinesis firehose时,确保每个json文档都附加了“\n”这成为SerDe所需的delimeter。因此示例{“hat”:“tophat”}+“\n”
{"level":"INFO","hash":"3c351293-11e3-4e32-baa2- 
bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- 
c38c3dab4848","event_type":"MELT_DOWN","payload":{"checking": 
"true"}}{"level":"INFO","hash":"3c351293-11e3-4e32-baa2- 
bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- 
c38c3dab4848","event_type":"MELT_DOWN","payl