現在、Apache ParquetReaderを使用して、次のようなローカルの寄木細工のファイルを読み取っています。
ParquetReader<GenericData.Record> reader = null;
Path path = new Path("userdata1.parquet");
try {
reader = AvroParquetReader.<GenericData.Record>builder(path).withConf(new Configuration()).build();
GenericData.Record record;
while ((record = reader.read()) != null) {
System.out.println(record);
しかし、私はそれをダウンロードせずにS3を介して寄木細工のファイルにアクセスしようとしています。パーケットリーダーでInputstreamを直接解析する方法はありますか?
はい、hadoopの最新バージョンにはS3ファイルシステムのサポートが含まれています。 s3a
ライブラリのhadoop-aws
クライアントを使用して、S3ファイルシステムに直接アクセスします。
HadoopInputFile
パスは、プロパティを使用して構成された認証資格情報s3a://bucket-name/prefix/key
およびaccess_key
とともに、secret_key
として構築する必要があります
fs.s3a.access.key
fs.s3a.secret.key
さらに、これらの依存ライブラリが必要になります
hadoop-common
JARaws-Java-sdk-bundle
JAR続きを読む: 関連する構成プロパティ