我在Spark 1.3.0中,我的数据在DataFrames中。 我需要像sampleByKey(),sampleByKeyExact()这样的操作。 我看到了JIRA“向DataFrame添加近似分层抽样”(https://issues.apache.org/jira/browse/SPARK-7157)。 这是Spark 1.5的目标,直到它成功,这是在DataFrames上完成相当于sampleByKey()和sampleByKeyExact()的最简单方法。 谢谢&问候 MK
答案 0 :(得分:3)
Spark 1.1 added分层抽样例程SampleByKey
和SampleByKeyExact
到Spark Core,因此从那时起它们就没有MLLib依赖。
这两个函数是PairRDDFunctions
,属于键值RDD[(K,T)]
。此外,DataFrames没有密钥。您必须使用底层RDD - 如下所示:
val df = ... // your dataframe
val fractions: Map[K, Double] = ... // specify the exact fraction desired from each key
val sample = df.rdd.keyBy(x=>x(0)).sampleByKey(false, fractions)
请注意,sample
现在是RDD而不是DataFrame,但您可以轻松将其转换回DataFrame,因为您已经为df
定义了架构。