【发布时间】:2016-11-29 06:50:12
【问题描述】:
我在 Scala 中使用 Spark,我的聚合列是匿名的。有没有一种方便的方法来重命名数据集中的多个列?我想过用as 强加一个模式,但关键列是一个结构(由于groupBy 操作),我不知道如何定义一个case class 和StructType。
我尝试如下定义架构:
val returnSchema = StructType(StructField("edge", StructType(StructField("src", IntegerType, true),
StructField("dst", IntegerType), true)),
StructField("count", LongType, true))
edge_count.as[returnSchema]
但我得到一个编译错误:
Message: <console>:74: error: overloaded method value apply with alternatives:
(fields: Array[org.apache.spark.sql.types.StructField])org.apache.spark.sql.types.StructType <and>
(fields: java.util.List[org.apache.spark.sql.types.StructField])org.apache.spark.sql.types.StructType <and>
(fields: Seq[org.apache.spark.sql.types.StructField])org.apache.spark.sql.types.StructType
cannot be applied to (org.apache.spark.sql.types.StructField, org.apache.spark.sql.types.StructField, Boolean)
val returnSchema = StructType(StructField("edge", StructType(StructField("src", IntegerType, true),
【问题讨论】:
-
你能给我们看看代码吗?那么也许我可以制定一个更好的方法?
-
假设您有一个包含三列的数据集。按前两个分组,按第三个计数。关键是一个元组。我在 Spark 1.6.2 上。谢谢@AlbertoBonsanto!
标签: scala apache-spark apache-spark-dataset