【问题标题】:Spark DataFrame not supporting Char datatypeSpark DataFrame 不支持 Char 数据类型
【发布时间】:2017-09-06 21:29:18
【问题描述】:

我正在从一个文本文件创建一个 Spark DataFrame。假设包含 String、Int、Char 的 Employee 文件。

创建了一个类:

case class Emp (
  Name: String, 
  eid: Int, 
  Age: Int, 
  Sex: Char, 
  Sal: Int, 
  City: String)

使用 split 创建 RDD1,然后创建 RDD2:

val textFileRDD2 = textFileRDD1.map(attributes => Emp(
  attributes(0), 
  attributes(1).toInt, 
  attributes(2).toInt, 
  attributes(3).charAt(0), 
  attributes(4).toInt, 
  attributes(5)))

最终 RDDS 为:

finalRDD = textFileRDD2.toDF

当我创建最终的 RDD 时,它会抛出错误:

java.lang.UnsupportedOperationException: No Encoder found for scala.Char"

谁能帮我解释一下为什么以及如何解决它?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    Spark SQL 不为Chargeneric Encoders are not very useful 提供Encoders

    您可以使用StringType:

    attributes(3).slice(0, 1)
    

    ShortType(或BooleanTypeByteType,如果您只接受二进制响应):

    attributes(3)(0) match {
       case 'F' => 1: Short
       ...
       case _ => 0: Short
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-26
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 2017-09-24
      • 2016-09-28
      相关资源
      最近更新 更多