[英]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.