Read parquet data from Azure Blob container without downloading it locally(无需本地下载即可从Azure Blob容器中读取镶木地板数据)
本文介绍了无需本地下载即可从Azure Blob容器中读取镶木地板数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用azure SDK、avro-parquet和Hadoop库从Blob Container中读取拼图文件。目前,我正在将文件下载到临时文件,然后创建一个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有这样的方法(Read parquet data from AWS s3 bucket),但Azure是否存在这种可能性?
推荐答案
了解如何执行此操作。
StorageCredentials credentials = new StorageCredentialsAccountAndKey(accountName, accountKey);
CloudStorageAccount connection = new CloudStorageAccount(credentials, true);
CloudBlobClient blobClient = connection.createCloudBlobClient();
CloudBlobContainer container = blobClient.getContainerReference(containerName);
CloudBlob blob = container.getBlockBlobReference(fileName);
Configuration config = new Configuration();
config.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem");
config.set("fs.azure.sas.<containerName>.<accountName>.blob.core.windows.net", token);
URI uri = new URI("wasbs://<containerName>@<accountName>.blob.core.windows.net/" + blob.getName());
InputFile file = HadoopInputFile.fromPath(new org.apache.hadoop.fs.Path(uri),
config);
ParquetReader<GenericRecord> reader = AvroParquetReader.<GenericRecord> builder(file).build();
GenericRecord record;
while ((record = reader.read()) != null) {
System.out.println(record);
}
reader.close();
这篇关于无需本地下载即可从Azure Blob容器中读取镶木地板数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:无需本地下载即可从Azure Blob容器中读取镶木地板数据


基础教程推荐
猜你喜欢
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 修改 void 函数的输入参数,然后读取 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01