我正在使用 azure SDK、avro-parquet 和 hadoop 库从 Blob Container 中读取 parquet 文件。目前,我正在将文件下载到临时文件,然后创建一个 ParquetReader。
try (InputStream input = blob.openInputStream()) {
Path tmp = Files.createTempFile("tempFile", ".parquet");
Files.copy(input, tmp, StandardCopyOption.REPLACE_EXISTING);
IOUtils.closeQuietly(input);
InputFile file = HadoopInputFile.fromPath(new org.apache.hadoop.fs.Path(tmp.toFile().getPath()),
new Configuration());
ParquetReader<GenericRecord> reader = AvroParquetReader.<GenericRecord> builder(file).build();
GenericRecord record;
while ((record = reader.read()) != null) {
recordList.add(record);
}
} catch (IOException | StorageException e) {
log.error(e.getMessage(), e);
}
我想使用 azure blob 项目中的 inputStream 读取此文件,而不将其下载到我的机器上。S3 有这样的方式(从 AWS s3 存储桶读取镶木地板数据),但是 Azure 是否存在这种可能性?
慕森王
相关分类