我试图将一些测试数据从我的本地笔记本电脑上用Java保存到S3上,得到以下错误:
下面是我的代码
private void testSaveToS3(SysS3Configuration s3Configuration) {
try {
Schema avroSchema = TestDTO.getClassSchema();
Path path = new Path("s3a://" + s3Configuration.getBucketName()+"/test.parquet");
Configuration config = new Configuration();
config.set("fs.s3a.access.key", s3Configuration.getAccessKeyId());
config.set("fs.s3a.secret.key", s3Configuration.getSecretKey());
ParquetWriter writer = AvroParquetWriter.<GenericData.Record>builder(path)
.withSchema(avroSchema)
.withConf(config)
.withCompressionCodec(CompressionCodecName.SNAPPY)
.withWriteMode(ParquetFileWriter.Mode.OVERWRITE)
.build();
List<TestDTO> list = new ArrayList<>();
TestDTO l1 = new TestDTO();
l1.setId(1);
l1.setValue(11);
TestDTO l2 = new TestDTO();
l2.setId(2);
l2.setValue(22);
list.add(l1);
list.add(l2);
for (TestDTO d : list) {
final GenericRecord record = new GenericData.Record(avroSchema);
record.put("id", d.getId());
record.put("value", d.getValue());
writer.write(record);
}
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我搜索了一下,但没有得到答案。有什么想法吗?提前道谢。
更新:
compile 'com.amazonaws:aws-java-sdk:1.11.747'
compile 'org.apache.parquet:parquet-avro:1.8.1'
compile 'org.apache.hadoop:hadoop-aws:3.3.0'
java.io.IOException: No FileSystem for scheme: s3a
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2421)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2428)
......
java.io.IOException: The s3n:// client to Amazon S3 is no longer available: please migrate to the s3a:// client
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.initialize(NativeS3FileSystem.java:82)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2433)
首先要检查的是依赖关系,s3文件系统实现与Hadoop的其他部分在一个单独的工件中。例如在gradle语法中:
api("org.apache.hadoop:hadoop-aws:$hadoopVersion")
更新:由于您添加了依赖项,hadoop 1.2.1版本确实很旧,截至2020年8月的当前版本是3.3.0。在旧版本中,您可能可以使用带有s3:/
或s3n:/
前缀的s3,但您确实应该更新,因为较新的s3a
实现包含大量改进。
我尝试使用Java将一些测试数据从本地笔记本电脑保存到S3,出现以下错误: org.apache.parquet.hadoop.IOException:无FileSystem方案:s3auilder.buildFileSriter.java:489FileSystem(FileSystem.java:1443)org.apache.hadoop.fs.FileSystem.access200美元(
我们在Azure中运行HDInsight集群,但它不允许在集群创建时向上旋转边缘/网关节点。所以我创建这个边缘/网关节点的方法是安装 然后我复制了 但是当我运行时,我得到以下错误 这里是完整的堆栈https://gist.github.com/anonymous/ebb6c9d71865c9c8e125aadbbdd6a5bc 我不确定这里缺少了哪个包/罐子。
问题内容: 我目前利用以下内容将文件上传到S3: 上面的方法工作正常,但我想直接将a保存到S3以从应用程序中删除几秒钟,但是我不知道如何执行此操作?这是我当前将图像保存到文件中的方式: 有没有一种方法可以直接以流的形式直接写入Amazon S3,如果可以,有人可以显示示例吗? 另外,这是个好主意吗?如果它容易出错,我将继续使用当前方法。任何建议表示赞赏。 问题答案: 以下(或类似的东西)应该可以正
我尝试用以下代码保存从internet下载的文件 但在运行时,我得到的错误如下 03-04 20:42:51.080 8972-8972/com.example.me.demo2 E/BitmapFactory:无法解码流:java.io.FileNotFoundExcoop: /storage/emulated/0/.tanks/4a100abb-0e55-4062-8c37-f11f4189e
如果有人帮我解决这个问题,我会非常感激。 我正在为我的项目使用codeigniter框架。并想将我的图像上传到amazon s3桶中。当我尝试使用S3.php文件时 string(92)“不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。” 有人能帮我解决这个问题吗。
我使用数据砖在R中开发了一个模型。我想将输出数据文件保存在 AWS S3 存储桶上,但当我保存文件如下时,它不会保存到挂载的驱动器。 使用R将数据挂载到S3的最佳方法是什么? 我已经尝试了下面的示例代码,它可以工作,所以我知道我在AWS和Database ricks之间的连接可以工作。