3

我目前正在启动一个名为“使用 Hadoop 进行时间序列挖掘算法的云计算”的项目。我拥有的数据是大小超过 TB 的 hdf 文件。在 hadoop 中,我知道我们应该将文本文件作为输入以进行进一步处理(map-reduce 任务)。所以我有一个选择,我将所有 .hdf 文件转换为文本文件,这将花费大量时间。

或者我找到了一种如何在 map reduce 程序中使用原始 hdf 文件的方法。到目前为止,我还没有成功找到任何读取 hdf 文件并从中提取数据的 java 代码。如果有人对如何使用 hdf 文件有更好的了解,我将非常感谢这样的帮助。

谢谢阿尤什

4

4 回答 4

3

以下是一些资源:

  • SciHadoop(使用 netCDF,但可能已经扩展到 HDF5)。
  • 您可以使用JHDF5或较低级别的官方Java HDF5 接口从 map-reduce 任务中的任何 HDF5 文件中读取数据。
于 2012-07-25T17:01:28.293 回答
2

对于您的第一个选项,您可以使用HDF 转储之类的转换工具将 HDF 文件转储为文本格式。否则,您可以使用 Java 库编写程序来读取 HDF 文件并将其写入文本文件。

对于您的第二个选项,SciHadoop 是一个很好的例子,说明了如何从 Hadoop 中读取科学数据集。它使用 NetCDF-Java 库来读取 NetCDF 文件。Hadoop 不支持文件 IO 的 POSIX API。因此,它使用额外的软件层将 NetCDF-java 库的 POSIX 调用转换为 HDFS(Hadoop) API 调用。如果 SciHadoop 尚不支持 HDF 文件,您可能会走上更艰难的道路并自己开发类似的解决方案。

于 2012-07-26T16:59:52.737 回答
1

如果您没有找到任何 java 代码并且可以使用其他语言,那么您可以使用 hadoop 流。

于 2012-07-25T21:34:32.970 回答
1

SciMATE http://www.cse.ohio-state.edu/~wayi/papers/SciMATE.pdf是一个不错的选择。它是基于 MapReduce 的一个变体开发的,它已被证明比 Hadoop 更有效地执行许多科学应用程序。

于 2013-12-10T17:11:28.293 回答