2015-03-30 99 views
1

在使用Apache Spark編程實現時,我遇到了使用BLOB數據類型處理表的問題。Apache Spark SQL BLOB數據類型

document_id | content 
      2 0x123sa.. 
     ...... 

org.apache.spark.sql.Row提供了不同的SQL數據類型的支持,但我還沒有找到一個BLOB類型:

sqlContext.sql("SELECT * FROM DOCUMENTS").map(row -> { 
    String documentName = row.getString(0); 
    Blob documentContents = row.??? 
    .... 
} 

我該如何解決這個問題?由sql()調用返回

回答

2

我會打電話printSchema()SchemaRDD(星火1.2.0或更早版本)或DataFrame(火花1.3.0)進行檢查確保你得到的東西 - 一個很好的技術使用時你對模式感到困惑。 (這取決於數據庫連接器的實現來決定如何映射型)最可能的選擇是BinaryType,這看起來像:

root 
|-- document_id string (nullable = ...) 
|-- content binary (nullable = ...) 

在這種情況下,你應該能夠使用

將其解壓
row.getAs[Array[Byte]](1) 
0

在spark2,我通過使用Java字節得到它[]如以下所示的:

字節[] fileContent =(字節[])r.get(0);