Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 读取HDF5文件_Scala_Apache Spark_Hdf5 - Fatal编程技术网

Scala 读取HDF5文件

Scala 读取HDF5文件,scala,apache-spark,hdf5,Scala,Apache Spark,Hdf5,有没有办法使用Scala版本的Spark读取HDF5文件 看起来可以用Python(通过Pyspark)完成,但我找不到Scala的任何东西。HDF5没有HadoopInputFormat实现,因为它不能被任意拆分: 将容器分解成块有点像拿着斧头将其砍成碎片,在过程中盲目地切断内容和智能布线。结果是一团糟,因为HDFS块边界和内部HDF5货物布局或集装箱支撑结构之间没有对齐或关联 同一个站点讨论了将HDF5文件转换为Avro文件的可能性,从而使它们能够被Hadoop/Spark读取,但您提到的示

有没有办法使用Scala版本的Spark读取HDF5文件


看起来可以用Python(通过Pyspark)完成,但我找不到Scala的任何东西。

HDF5没有Hadoop
InputFormat
实现,因为它不能被任意拆分:

将容器分解成块有点像拿着斧头将其砍成碎片,在过程中盲目地切断内容和智能布线。结果是一团糟,因为HDFS块边界和内部HDF5货物布局或集装箱支撑结构之间没有对齐或关联


同一个站点讨论了将HDF5文件转换为Avro文件的可能性,从而使它们能够被Hadoop/Spark读取,但您提到的示例可能是一种更简单的方法,但正如链接文档所提到的,要在Hadoop/Spark中高效地使用HDF5文档,有许多技术难题需要解决。

有一种新产品可以通过Scala从Apache Spark与HDF5对话:

使用上述产品,您可以在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)

答案中有一个示例,说明如何从百万首歌曲数据集中读取多个hdf5文件(压缩为.tar.gz),并提取每个文件的功能,最终生成Spark RDD,其中RDD的每个元素都是每个hdf5文件的一系列功能。

这可能会帮助您开始。