【发布时间】:2015-07-30 01:15:39
【问题描述】:
我正在尝试解决向数据集添加序列号的古老问题。我正在使用 DataFrame,似乎没有与 RDD.zipWithIndex 等效的 DataFrame。另一方面,以下工作或多或少符合我的要求:
val origDF = sqlContext.load(...)
val seqDF= sqlContext.createDataFrame(
origDF.rdd.zipWithIndex.map(ln => Row.fromSeq(Seq(ln._2) ++ ln._1.toSeq)),
StructType(Array(StructField("seq", LongType, false)) ++ origDF.schema.fields)
)
在我的实际应用程序中,origDF 不会直接从文件中加载——它将通过将 2-3 个其他 DataFrame 连接在一起来创建,并且将包含超过 1 亿行。
有没有更好的方法来做到这一点?我可以做些什么来优化它?
【问题讨论】:
标签: scala apache-spark apache-spark-sql