2015-02-17 27 views
7

Spark'in Scala sürümünü kullanarak HDF5 dosyalarını okumak için bir yol var mı? Python'da (Pyspark üzerinden) yapılabilir, fakat Scala için bir şey bulamıyorum. o keyfi bölünmüş olma yeteneğine sahip olmadığı için HDF5 için Hadoop InputFormat uygulama yokturHDF5 dosyalarını Apache Spark'de okuma

cevap

4

: "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." aynı site Avro dosyalara HDF5 dosyalarını dönüştürme olasılığını tartışıyor, böylece Hadoop/Kıvılcım tarafından okunacak sağlayarak, Ancak, aldığınız PySpark örneğinin muhtemelen daha basit bir yolu olduğunu, ancak bağlantılı belgenin de belirttiği gibi, Hadoop/Spark'de HDF5 belgeleriyle verimli ve etkili bir şekilde çalışmak için ele alınması gereken bazı teknik zorluklar vardır.

1

Scala aracılığıyla Apache Yeni Spark HDF5 konuşabilirsiniz yeni bir ürün var: Yukarıdaki ürün ile

https://www.hdfgroup.org/downloads/spark-connector/

sen Scala aşağıda gibi HDF5 açıp okuyabilir,:

// 
// 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) 
0

this question cevabının birden fazla hdf5 f okumasıyla ilgili bir örneği vardır. Million Song Dataset'ten (.tar.gz olarak sıkıştırılmış) iles ve her dosyanın özelliklerini, her bir RDD öğesinin her bir hdf5 dosyasının özelliklerinden oluşan bir Dizi olduğu bir Spark RDD ile sonlanacak şekilde çıkarır.