Spark 2.2.0数据集中的输出不是可读格式

问题描述 投票:0回答:1

以下是我试图在intellij IDE上使用spark2.2.0执行的代码。但我得到的输出并不是以可读格式显示的。

val spark = SparkSession
      .builder()
      .appName("Spark SQL basic example").master("local[2]")
      .getOrCreate()

    // For implicit conversions like converting RDDs to DataFrames
    import spark.implicits._

    import scala.reflect.ClassTag
    implicit def kryoEncoder[A](implicit ct: ClassTag[A]) =
      org.apache.spark.sql.Encoders.kryo[A](ct)

    case class Person(name: String, age: Long)

    // Encoders are created for case classes
    val caseClassDS = Seq(Person("Andy", 32)).toDS()
    caseClassDS.show()

输出显示:

+--------------------+
|               value|
+--------------------+
|[01 00 44 61 74 6...|
+--------------------+

任何人都可以解释我在这里遗失了什么?

谢谢

apache-spark apache-spark-dataset apache-spark-2.0
1个回答
0
投票

这是因为您使用的是Kryo Encoder,它不是为show反序列化对象而设计的。

一般情况下,当更精确的Encoder可用时,你永远不应该使用Kryo Encoders。它具有较差的性能和较少的功能。而是使用Product Encoder

spark.createDataset(Seq(Person("Andy", 32)))(Encoders.product[Person])
© www.soinside.com 2019 - 2024. All rights reserved.