读取 HDF5 文件
Reading HDF5 files
有没有办法使用 Scala 版本的 Spark 读取 HDF5 文件?
看起来可以在 Python 中完成(通过 Pyspark),但我找不到 Scala 的任何内容。
没有针对 HDF5 的 Hadoop InputFormat
实现,因为它不能被任意拆分:
Breaking the container into blocks is a bit like taking an axe and chopping it to pieces, severing blindly the content and the smart wiring in the process. The result is a mess, because there's no alignment or correlation between HDFS block boundaries and the internal HDF5 cargo layout or container support structure. Reference
同一站点讨论了将 HDF5 文件转换为 Avro 文件的可能性,从而使 Hadoop/Spark 能够读取它们,但是您提到的 PySpark 示例可能是一种更简单的方法,但正如链接文档中提到的那样,要在 Hadoop/Spark.
中有效地处理 HDF5 文档,需要解决许多技术挑战
有一个新产品可以通过 Scala 从 Apache Spark 与 HDF5 对话:
https://www.hdfgroup.org/downloads/hdf5-enterprise-support/hdf5-connector-for-apache-spark/
使用上述产品,您可以在 Scala 中打开和读取 HDF5,如下所示:
//
// HOW TO RUN:
//
// $spark-2.3.0-SNAPSHOT-bin-hdf5s-0.0.1/bin/spark-shell -i demo.scala
import org.hdfgroup.spark.hdf5._
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().appName("Spark SQL HDF5 example").getOrCreate()
// We assume that HDF5 files (e.g., GSSTF_NCEP.3.2008.12.31.he5) are
// under /tmp directory. Change the path name ('/tmp') if necessary.
val df=spark.read.option("extension", "he5").option("recursion", "false").hdf5("/tmp/", "/HDFEOS/GRIDS/NCEP/Data Fields/SST")
// Let's print some values from the dataset.
df.show()
// The output will look like below.
//
//+------+-----+------+
//|FileID|Index| Value|
//+------+-----+------+
//| 0| 0|-999.0|
//| 0| 1|-999.0|
//| 0| 2|-999.0|
//...
System.exit(0)
this question 的答案有一个示例,说明如何从百万歌曲数据集中读取多个 hdf5 文件(压缩为 .tar.gz)并提取每个文件的特征以得到 Spark RDD其中 RDD 的每个元素都是每个 hdf5 文件的特征数组。
有没有办法使用 Scala 版本的 Spark 读取 HDF5 文件?
看起来可以在 Python 中完成(通过 Pyspark),但我找不到 Scala 的任何内容。
没有针对 HDF5 的 Hadoop InputFormat
实现,因为它不能被任意拆分:
Breaking the container into blocks is a bit like taking an axe and chopping it to pieces, severing blindly the content and the smart wiring in the process. The result is a mess, because there's no alignment or correlation between HDFS block boundaries and the internal HDF5 cargo layout or container support structure. Reference
同一站点讨论了将 HDF5 文件转换为 Avro 文件的可能性,从而使 Hadoop/Spark 能够读取它们,但是您提到的 PySpark 示例可能是一种更简单的方法,但正如链接文档中提到的那样,要在 Hadoop/Spark.
中有效地处理 HDF5 文档,需要解决许多技术挑战有一个新产品可以通过 Scala 从 Apache Spark 与 HDF5 对话:
https://www.hdfgroup.org/downloads/hdf5-enterprise-support/hdf5-connector-for-apache-spark/
使用上述产品,您可以在 Scala 中打开和读取 HDF5,如下所示:
//
// HOW TO RUN:
//
// $spark-2.3.0-SNAPSHOT-bin-hdf5s-0.0.1/bin/spark-shell -i demo.scala
import org.hdfgroup.spark.hdf5._
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().appName("Spark SQL HDF5 example").getOrCreate()
// We assume that HDF5 files (e.g., GSSTF_NCEP.3.2008.12.31.he5) are
// under /tmp directory. Change the path name ('/tmp') if necessary.
val df=spark.read.option("extension", "he5").option("recursion", "false").hdf5("/tmp/", "/HDFEOS/GRIDS/NCEP/Data Fields/SST")
// Let's print some values from the dataset.
df.show()
// The output will look like below.
//
//+------+-----+------+
//|FileID|Index| Value|
//+------+-----+------+
//| 0| 0|-999.0|
//| 0| 1|-999.0|
//| 0| 2|-999.0|
//...
System.exit(0)
this question 的答案有一个示例,说明如何从百万歌曲数据集中读取多个 hdf5 文件(压缩为 .tar.gz)并提取每个文件的特征以得到 Spark RDD其中 RDD 的每个元素都是每个 hdf5 文件的特征数组。