【问题标题】:Apache Spark SQL BLOB datatypeApache Spark SQL BLOB 数据类型
【发布时间】:2015-06-04 00:39:51
【问题描述】:

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

我该如何解决这个问题?

【问题讨论】:

    标签: java mysql sql apache-spark


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 如何将此row.getAs[Array[Byte]](1) 转换为Java?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2020-12-21
      • 2012-03-08
      • 2014-12-06
      • 1970-01-01
      相关资源
      最近更新 更多