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
Java 从包含数千个s3对象的s3存储桶读取数据_Java_Amazon S3_Aws Sdk_Inputstream - Fatal编程技术网

Java 从包含数千个s3对象的s3存储桶读取数据

Java 从包含数千个s3对象的s3存储桶读取数据,java,amazon-s3,aws-sdk,inputstream,Java,Amazon S3,Aws Sdk,Inputstream,我有一个s3存储桶,里面有12000个s3对象。我想分批读取这些s3对象(比如50个)。我已经将最大连接数设置为1000(但是我们有12000个连接,通常一次打开这么多连接不是一个好的做法,而最终我一次只读取几个连接)。我有多线程java代码,它从这些s3对象读取,每个s3对象被分配给一个线程。问题就在这里 1.我想批量读取s3对象,比如说一次读取50个对象,但由于我们只从bucket中读取50个对象,并将S3ObjectInputStream分配给一个线程,所以我得到了连接重置错误,因为所有其

我有一个s3存储桶,里面有12000个s3对象。我想分批读取这些s3对象(比如50个)。我已经将最大连接数设置为1000(但是我们有12000个连接,通常一次打开这么多连接不是一个好的做法,而最终我一次只读取几个连接)。我有多线程java代码,它从这些s3对象读取,每个s3对象被分配给一个线程。问题就在这里 1.我想批量读取s3对象,比如说一次读取50个对象,但由于我们只从bucket中读取50个对象,并将S3ObjectInputStream分配给一个线程,所以我得到了连接重置错误,因为所有其他输入流都在等待从s3对象实际开始读取

java.net.SocketException:连接重置

解决这类问题的最佳方法是什么


我已将最大连接数增加到1000个,虽然我有12k,但我如何能够自动执行此操作,以便不必将s3 bucket拆分为1000个对象。

我怀疑问题在于您试图使用s3批处理来执行它不支持的操作。报告说:

要创建作业,请为AmazonS3批处理操作提供一个对象列表,并指定要对这些对象执行的操作。Amazon S3批处理操作支持以下操作:

  • 放置复制对象

  • 放置对象标记

  • 放置对象ACL

  • 启动冰川恢复

  • 调用AWS Lambda函数

对象GET不在该列表中


(但是如果您向我们展示了一个,我们就可以理解您真正在做什么!)

我怀疑问题在于您试图使用S3批处理来做一些它不支持的事情。报告说:

要创建作业,请为AmazonS3批处理操作提供一个对象列表,并指定要对这些对象执行的操作。Amazon S3批处理操作支持以下操作:

  • 放置复制对象

  • 放置对象标记

  • 放置对象ACL

  • 启动冰川恢复

  • 调用AWS Lambda函数

对象GET不在该列表中


(但如果您向我们展示了一个,我们可以理解您真正在做什么!)

您需要共享您的代码。这与代码无关。我想问的是成批处理数千个s3对象的方法。您实际想要达到的最终目标是什么?也许有更好的方法来实现它。例如,它们是什么类型的文件(CSV?JSON?Compressed?)以及对它们执行什么处理?这可能是Amazon Athena的一个合适的用例,但我们需要更多的细节来确定。@Mohini-我想这是关于你的代码(!)。我怀疑重置是S3服务器对您的错误行为的反应;e、 g.同时连接过多,或打开连接后没有及时读取。不管怎样,你的描述都不够清晰,我们无法确定你到底在做什么。如果我们不知道,我们就不能说原因是什么,以及你能做些什么来修复它。代码将告诉我们您在做什么。@StephenC是的,实际上我一次打开了所有连接。找到并修复了它。顺便说一句,谢谢!你需要分享你的代码,这与代码无关。我想问的是成批处理数千个s3对象的方法。您实际想要达到的最终目标是什么?也许有更好的方法来实现它。例如,它们是什么类型的文件(CSV?JSON?Compressed?)以及对它们执行什么处理?这可能是Amazon Athena的一个合适的用例,但我们需要更多的细节来确定。@Mohini-我想这是关于你的代码(!)。我怀疑重置是S3服务器对您的错误行为的反应;e、 g.同时连接过多,或打开连接后没有及时读取。不管怎样,你的描述都不够清晰,我们无法确定你到底在做什么。如果我们不知道,我们就不能说原因是什么,以及你能做些什么来修复它。代码将告诉我们您在做什么。@StephenC是的,实际上我一次打开了所有连接。找到并修复了它。顺便说一句,谢谢!