从 AWS s3 存储桶读取拼花数据

编程入门 行业动态 更新时间:2024-10-28 01:23:05
本文介绍了从 AWS s3 存储桶读取拼花数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我需要从 aws s3 读取镶木地板数据.如果我为此使用 aws sdk,我可以获得如下输入流:

I need read parquet data from aws s3. If I use aws sdk for this I can get inputstream like this:

S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, bucketKey)); InputStream inputStream = object.getObjectContent();

但是 apache parquet reader 只使用这样的本地文件:

But the apache parquet reader uses only local file like this:

ParquetReader<Group> reader = ParquetReader.builder(new GroupReadSupport(), new Path(file.getAbsolutePath())) .withConf(conf) .build(); reader.read()

所以我不知道如何解析镶木地板文件的输入流.例如,对于 csv 文件,有使用输入流的 CSVParser.

So I don't know how parse input stream for parquet file. For example for csv files there is CSVParser which uses inputstream.

我知道使用 spark 来实现这个目标的解决方案.像这样:

I know solution to use spark for this goal. Like this:

SparkSession spark = SparkSession .builder() .getOrCreate(); Dataset<Row> ds = spark.read().parquet("s3a://bucketName/file.parquet");

但我不能使用火花.

谁能告诉我从 s3 读取镶木地板数据的任何解决方案?

Could anyone tell me any solutions for read parquet data from s3?

推荐答案

String SCHEMA_TEMPLATE = "{" + ""type": "record", " + " "name": "schema", " + " "fields": [ " + " {"name": "timeStamp", "type": "string"}, " + " {"name": "temperature", "type": "double"}, " + " {"name": "pressure", "type": "double"} " + " ]" + "}"; String PATH_SCHEMA = "s3a"; Path internalPath = new Path(PATH_SCHEMA, bucketName, folderName); Schema schema = new Schema.Parser().parse(SCHEMA_TEMPLATE); Configuration configuration = new Configuration(); AvroReadSupport.setRequestedProjection(configuration, schema); ParquetReader<GenericRecord> = AvroParquetReader.GenericRecord>builder(internalPath).withConf(configuration).build(); GenericRecord genericRecord = parquetReader.read(); while(genericRecord != null) { Map<String, String> valuesMap = new HashMap<>(); genericRecord.getSchema().getFields().forEach(field -> valuesMap.put(field.name(), genericRecord.get(field.name()).toString())); genericRecord = parquetReader.read(); }

Gradle 依赖

compile 'com.amazonaws:aws-java-sdk:1.11.213' compile 'org.apache.parquet:parquet-avro:1.9.0' compile 'org.apache.parquet:parquet-hadoop:1.9.0' compile 'org.apache.hadoop:hadoop-common:2.8.1' compile 'org.apache.hadoop:hadoop-aws:2.8.1' compile 'org.apache.hadoop:hadoop-client:2.8.1'

更多推荐

从 AWS s3 存储桶读取拼花数据

本文发布于:2023-10-22 23:51:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1519103.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:拼花   数据   AWS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!