Apache Spark SQL BLOB数据类型

时间:2015-03-30 20:29:09

标签: java mysql sql apache-spark

使用Apache Spark编程实现时,我遇到了处理具有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.???
   ....
}

如何解决问题?

2 个答案:

答案 0 :(得分:4)

我在printSchema()上调用SchemaRDD(Spark 1.2.0或更早版本)或DataFrame(Spark 1.3.0)调用sql()检查你得到了什么 - 当你对架构感到困惑时,这是一种很好的技巧。 (它由数据库连接器的实现决定如何映射类型。)最可能的选项是BinaryType,它看起来像:

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

在这种情况下,您应该能够使用

提取它
row.getAs[Array[Byte]](1) 

答案 1 :(得分:0)

在spark2中,我通过使用Java byte []得到它,如下所示:

byte [] fileContent =(byte [])r.get(0);

相关问题