以下是我试图在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...|
+--------------------+
有人可以解释我在这里遗失了什么吗?
由于
答案 0 :(得分:0)
这是因为您使用的Kryo Encoder
并非旨在反序列化show
的对象。
一般情况下,如果有更精确的Encoder
,则不应使用Kryo Encoders
。它具有较差的性能和较少的功能。而是使用Product
Encoder
spark.createDataset(Seq(Person("Andy", 32)))(Encoders.product[Person])