2015-03-30 83 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);