在上火花數據集有多種生成的函數簽名select()
功能展望:星火數據集選擇與typedcolumn
(c1: TypedColumn[MyClass, U1],c2: TypedColumn[MyClass, U2] ....)
這似乎在暗示我應該能夠MyClass的成員直接引用,並類型安全,但我不知道如何...
ds.select("member")
當然工程..似乎ds.select(_.member)
也可能以某種方式工作?
在上火花數據集有多種生成的函數簽名select()
功能展望:星火數據集選擇與typedcolumn
(c1: TypedColumn[MyClass, U1],c2: TypedColumn[MyClass, U2] ....)
這似乎在暗示我應該能夠MyClass的成員直接引用,並類型安全,但我不知道如何...
ds.select("member")
當然工程..似乎ds.select(_.member)
也可能以某種方式工作?
在Scala的DSL爲select
,有很多種方法識別一Column
:
'name
$"name"
或col(name)
expr("nvl(name, 'unknown') as renamed")
要得到一個TypedColumn
從Column
你只需使用myCol.as[T]
即可。
例如:ds.select(col("name").as[String])
如果你想的ds.select(_.member)
相當於只使用map
:
case class MyClass(member: MyMember, foo: A, bar: B)
val ds: DataSet[MyClass] = ???
val members: DataSet[MyMember] = ds.map(_.member)