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

时间:2017-12-28 02:10:59

标签: apache-spark apache-spark-dataset apache-spark-2.0

以下是我试图在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...|
+--------------------+

有人可以解释我在这里遗失了什么吗?

由于

1 个答案:

答案 0 :(得分:0)

这是因为您使用的Kryo Encoder并非旨在反序列化show的对象。

一般情况下,如果有更精确的Encoder,则不应使用Kryo Encoders。它具有较差的性能和较少的功能。而是使用Product Encoder

spark.createDataset(Seq(Person("Andy", 32)))(Encoders.product[Person])