我在AWS S3中存储了大量大气数据,我想用Apache来分析这些数据,但是加载到RDD中有很大的困难。我已经在网上找到了一些例子来帮助解决这个问题的不同方面:
-using h5py通过h5py.File(filename) (https://hdfgroup.org/wp/2015/03/from-hdf5-datasets-to-apache-spark-rdds/)读取本地存储的科学数据文件
-boto/boto 3以获取文本文件格式的数据,通过get_contents_as_string()从S3到Spark
通过-map将一组文本文件通过keys.flatMap(mapFunc)发送到RDD
但我似乎不能让这些部件一起工作。具体来说--如何从s3加载netcdf文件(使用boto或直接加载,而不是附加到使用boto)以便使用h5py?或者,您是否可以将netcdf文件视为二进制文件,并将其作为二进制文件加载并使用sc.BinaryFile(binaryFile)映射到rdd。
下面有几个类似的问题没有得到充分的回答,这些问题是相关的:
发布于 2020-03-27 11:47:05
使用netCDF4和s3fs模块,您可以:
from netCDF4 import Dataset
import s3fs
s3 = s3fs.S3FileSystem()
filename = 's3://bucket/a_file.nc'
with s3.open(filename, 'rb') as f:
nc_bytes = f.read()
root = Dataset(f'inmemory.nc', memory=nc_bytes)确保设置了从S3读取数据。有关详细信息,这里是文档。
https://stackoverflow.com/questions/43197223
复制相似问题