2015-02-17 32 views
7

Có cách nào để đọc tệp HDF5 bằng phiên bản Scala của Spark không? Dường như nó có thể được thực hiện bằng Python (thông qua Pyspark), nhưng tôi không thể tìm thấy bất cứ điều gì cho Scala.Đọc tệp HDF5 trong Apache Spark

Trả lời

4

Không có triển khai Hadoop InputFormat cho HDF5 vì không thể phân chia tùy ý: "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." Trang web tương tự thảo luận khả năng chuyển tệp HDF5 thành tệp Avro, do đó cho phép chúng được đọc bởi Hadoop/Spark, nhưng ví dụ PySpark mà bạn ám chỉ có lẽ là một cách đơn giản hơn, nhưng như các tài liệu được liên kết đề cập, có một số thách thức kỹ thuật cần được giải quyết để làm việc hiệu quả và hiệu quả với các tài liệu HDF5 trong Hadoop/Spark.

1

Có một sản phẩm mới có thể nói chuyện với HDF5 từ Apache Spark qua Scala:

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

Với sản phẩm trên, bạn có thể mở và đọc HDF5 như dưới đây trong Scala:

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

Câu trả lời cho this question có ví dụ về cách đọc nhiều hdf5 f iles (nén dưới dạng .tar.gz) từ Million Song Dataset và trích xuất các tính năng của từng tệp để kết thúc với một RDD Spark nơi mỗi phần tử của RDD là một mảng các tính năng của mỗi tệp hdf5.

Các vấn đề liên quan