Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Amazon Kinesis消防软管至S3,带有Protobuf数据_Amazon Web Services_Amazon S3_Protocol Buffers_Amazon Kinesis Firehose - Fatal编程技术网

Amazon web services Amazon Kinesis消防软管至S3,带有Protobuf数据

Amazon web services Amazon Kinesis消防软管至S3,带有Protobuf数据,amazon-web-services,amazon-s3,protocol-buffers,amazon-kinesis-firehose,Amazon Web Services,Amazon S3,Protocol Buffers,Amazon Kinesis Firehose,是否有人尝试过通过Kinesis消防软管将(PB)数据推送到S3存储。我问这个问题是因为Protobuf(通常)是一种二进制格式,我记得(可能是错误的)Firehose在写入之前通过base64转换运行所有数据。我需要稍后读取PB数据进行处理,并想知道在使用之前是否需要对其进行去基处理,或者是否可以直接访问原始PB数据。谢谢 您可以将二进制数据传递给Kiness Firehose,在发送到另一个AWS服务之前,Kinesis将对数据进行base64编码。查看Java文档中的setData()函数

是否有人尝试过通过Kinesis消防软管将(PB)数据推送到S3存储。我问这个问题是因为Protobuf(通常)是一种二进制格式,我记得(可能是错误的)Firehose在写入之前通过base64转换运行所有数据。我需要稍后读取PB数据进行处理,并想知道在使用之前是否需要对其进行去基处理,或者是否可以直接访问原始PB数据。谢谢

您可以将二进制数据传递给Kiness Firehose,在发送到另一个AWS服务之前,Kinesis将对数据进行base64编码。查看Java文档中的setData()函数:


例如,在从S3读取数据之后,您需要对数据进行解码以进行进一步处理。

您可以使用Lambda将二进制数据直接写入S3。不过,您需要能够从lambda从源代码中提取文件,因为我相信API网关将Base64编码二进制有效负载。

这是一个有趣的问题。然而,我需要问为什么?Google PB是一种序列化数据格式。这意味着您正在获取结构化数据,更改其格式,然后将其发送到KinesFirehose。然后,您必须反序列化数据,这可能意味着重新创建Google库。为什么不直接将数据发送到Kinesis?实际上,这正是我想要做的:将PB直接写入S3。我使用FH作为缓冲区来聚合一段时间内的大量文件写入。然而,从我读到的内容来看,FH不会获取原始二进制数据,而是在传输过程中转换为base64。我说的不对吗?我想直接将PB字节[]写入FH,然后在S3之后直接读取它。这里有一个参考:参考说当BLOB被序列化时,它是base64编码的。你最终用protobufs和firehose做到了吗?然后,如果KinesFirehose要求二进制数据以base64编码写入,是否有其他方法将未编码的二进制数据放入S3?或者,我开始认为我们需要实现我们自己的AMPQ或Kafka服务来处理数据聚合,然后直接将二进制文件复制到S3。谢谢您的帮助。它告诉我的是firehose不是二进制日志文件的解决方案!