在使用Apache进行编程实现时,我遇到了使用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.???
....
}我该如何解决这个问题?
发布于 2015-03-31 01:39:26
我会在由printSchema()调用返回的SchemaRDD (Spark1.2.0或更早版本)或DataFrame (Spark1.3.0)上调用sql(),以确定您得到了什么--这是在您对模式感到困惑时使用的一个很好的技术。(取决于数据库连接器的实现来决定如何映射类型。)最有可能的选择是BinaryType,它看起来如下:
root
|-- document_id string (nullable = ...)
|-- content binary (nullable = ...)在这种情况下,您应该能够使用
row.getAs[Array[Byte]](1) 发布于 2016-12-07 13:34:30
在spark2中,我通过使用Java字节[]获得它,如下所示:
byte[] fileContent = (byte[]) r.get(0);
https://stackoverflow.com/questions/29355683
复制相似问题