Dataframe上的分层采样-Spark 2.3 + Scala

时间:2019-08-12 02:33:33

标签: scala apache-spark random sampling

我已经阅读了很多关于Spark for RDD中的分层采样的内容。我在DataFrames中遇到了sample,而RDD却有sampleByKey

问题:

  1. Dataframe中的sample是否基于分层策略对数据进行采样?
  2. post显示了如何在数据框上使用sampleByKey。当我们来回转换DF-> RDD-> DF时,性能会降低吗?
  3. samplesampleByKey之间的主要区别是什么?
  4. 采样10GB CSV文件(约50M行)的最佳方法是什么?我应该使用DF sample还是RDD sampleByKey? (我没有此文件的密钥)。
  5. 我愿意听到使用Spark + Scala解决 问题4
  6. 的任何其他建议

直到现在我一直在尝试

iFile = "/user/me/data.txt"
data = spark.read.format("csv").option("seq", "|").load(iFile)
data.sample(0.2) //20% sample.. that's approx 10M rows 

iFile = "/user/me/data.txt"
data = spark.read.format("csv").option("seq", "|").load(iFile)
data.rdd.keyBy(x=>x(0)).sampleByKey(false, 0.2) //20% sample.. that's approx 10M rows 

0 个答案:

没有答案