Spark DataFrame不支持CHAR数据类型



我正在从文本文件中创建一个火花数据帧。说包含字符串的员工文件,int,char。

创建一个类:

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:没有为scala.char找到编码器。

任何人都可以帮助我解决为什么以及如何解决?

Spark SQL不为Char提供Encoders,而通用Encoders不是很有用。

您可以使用StringType

attributes(3).slice(0, 1)

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

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

相关内容

  • 没有找到相关文章

最新更新