以下是我试图在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...|
+--------------------+
任何人都可以解释我在这里遗失了什么?
谢谢
这是因为您使用的是Kryo Encoder
,它不是为show
反序列化对象而设计的。
一般情况下,当更精确的Encoder
可用时,你永远不应该使用Kryo Encoders
。它具有较差的性能和较少的功能。而是使用Product
Encoder
spark.createDataset(Seq(Person("Andy", 32)))(Encoders.product[Person])