繁体   English   中英

Apache Spark SQL BLOB数据类型

[英]Apache Spark SQL BLOB datatype

在使用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.???
   ....
}

我该如何解决这个问题?

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

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

在这种情况下,您应该能够使用它来提取它

row.getAs[Array[Byte]](1) 

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM