2016-07-28 54 views
4

在上火花数据集有多种生成的函数签名select()功能展望:星火数据集选择与typedcolumn

(c1: TypedColumn[MyClass, U1],c2: TypedColumn[MyClass, U2] ....) 

这似乎在暗示我应该能够MyClass的成员直接引用,并类型安全,但我不知道如何...

ds.select("member")当然工程..似乎ds.select(_.member)也可能以某种方式工作?

回答

10

在Scala的DSL为select,有很多种方法识别一Column

  • 从符号:'name
  • 从字符串:$"name"col(name)
  • 从表达式:expr("nvl(name, 'unknown') as renamed")

要得到一个TypedColumnColumn你只需使用myCol.as[T]即可。

例如:ds.select(col("name").as[String])

4

如果你想的ds.select(_.member)相当于只使用map

case class MyClass(member: MyMember, foo: A, bar: B) 
val ds: DataSet[MyClass] = ??? 
val members: DataSet[MyMember] = ds.map(_.member)