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