【发布时间】:2017-12-11 02:34:44
【问题描述】:
我有一个包含以下列(每个结构的示例)的 Spark RDD(或 Dataframe - 转换为任何一个都不是问题):
res248: org.apache.spark.rdd.RDD[(String, Array[String])] = MapPartitionsRDD[1004] at map at <console>:246
org.apache.spark.sql.DataFrame = [id: string, list: array<string>]
我想扩展这个 RDD/DF 以增加一个包含列表数组大小的列。所以输出应该是这样的(例子):
org.apache.spark.sql.DataFrame = [id: string, list: array<string>, length_of_list: int]
我尝试发送rdd.map(x=> (x._1,x._2,count(x._2))),但收到一条错误消息:
<console>:246: error: overloaded method value count with alternatives:
(columnName: String)org.apache.spark.sql.TypedColumn[Any,Long] <and>
(e: org.apache.spark.sql.Column)org.apache.spark.sql.Column
尝试使用带有函数withColumn("new_column",count($"list")) 或其任何变体的DF 添加新列。它仍然不起作用。我收到一条关于聚合的错误消息。
您知道无需收集 RDD 即可实现此目的的方法吗?
【问题讨论】:
标签: scala apache-spark apache-spark-sql