ds.select(_.member) map:
case class MyClass(member: MyMember, foo: A, bar: B)
val ds: DataSet[MyClass] = ???
val members: DataSet[MyMember] = ds.map(_.member)
: map.
, map . , Catalyst - . @Sim , , MyClass Tungsten JVM - - _.member .
, :
case class MyMember(something: Double)
case class MyClass(member: MyMember, foo: Int, bar: String)
case , SQLImplicits.newProductEncoder[T <: Product] Encoder[MyClass], API Dataset[T].
:
val ds: Dataset[MyClass] = Seq(MyClass(MyMember(1.0), 2, "three")).toDS()
val membersMapped: Dataset[Double] = ds.map(_.member.something)
, , explain():
membersMapped.explain()
== Physical Plan ==
*(1) SerializeFromObject [input[0, double, false] AS value#19]
+- *(1) MapElements <function1>, obj#18: double
+- *(1) DeserializeToObject newInstance(class MyClass), obj#17: MyClass
+- LocalTableScan [member#12, foo#13, bar#14]
/ Tungsten .
, [^ 1]:
val ds2: Dataset[Double] = ds.select($"member.something".as[Double])
ds2.explain()
== Physical Plan ==
LocalTableScan [something#25]
! [^ 2]. , MyClass .
[^ 1]: , $"member.something" $"value.member.something", , Catalyst DataFrame.
[^ 2]: , * , WholeStageCodegenExec , JVM, . , , .