当前位置: 首页 > 知识库问答 >
问题:

当我们不考虑数据帧的大小时,如何快速地从PySpark中的大数据中采样?

萧业
2023-03-14

我有两个pyspark数据帧TDFFDF,其中FDFTDF大得多。这些数据流的大小每天都在变化,我不知道它们。我想从FDF中随机选取数据组成一个新的数据帧RDF,其中RDF的大小大约等于TDF的大小。目前我有以下几行:

tdf = tdf.count()
fdf = fdf.count()
sampling_fraction = float(tdf) / float(fdf)
rdf = fdf(sampling_fraction, SEED)

这些线产生正确的结果。但当fdf的大小增加时,fdf.count()需要几天才能完成。你能建议另一种在Pyspark更快的方法吗?

共有1个答案

邴修远
2023-03-14

您可以尝试从dataframe中采样以获得估计计数:

ratio = 0.01
fdf_estimate = fdf.sample(fraction=ratio).count() / ratio

您可以将比率更改为一个适当的值,以便它提供一个合理的性能。

 类似资料:
  • 我想编写一个具有重分区的大型数据帧,所以我想计算源数据帧的重分区数。 数据帧/default_blocksize的大小 所以请告诉我如何在spark scala中计算数据帧的大小 提前谢谢。

  • 我有2个不同大小的数据帧df1-df2(df2比df1有更多的行和列)。 我试图分配的值从df2['率']到df1['率'],在其中df1['单元']==df2['单元']行。 期望的输出是 我尝试了不同的方法: 只能比较相同标记的Series对象 给我假消息 我认为这来自于这样一个事实,即两个数据帧从一开始就有不同的大小。然而,我不明白为什么它应该阻止它做比较。我不确定如何从这里开始。

  • 我有一个pyspark数据框,在这里我可以找到每列的最小/最大值和最小/最大值计数。我可以使用: 我希望在同一数据帧中也有最小/最大值的计数。我需要的具体输出: …|col|n|col|m| …|xn | xm |。。。最小值(col(coln)) 计数(col_n==xn)|计数(col_m==xm)|。。。

  • 我一直在使用SE上发布的问题的一个极好的答案来确定分区的数量,以及跨数据帧的分区分布需要知道数据帧Spark中的分区详细信息 有人能帮我扩展答案来确定数据帧的分区大小吗? 谢谢

  • 我有一个DenseVectors作为行的dataframe: 我想用UDF找到每一行的最大值。我就是这么做的: 文件“C:\programdata\anaconda3\envs\python2\lib\site-packages\pyspark\sql\utils.py”,第63行,deco格式返回f(*a,**kw) 文件“C:\programdata\anaconda3\envs\python

  • 我有两个数据帧: df1-是一个透视表,它包含列和行的总数,两者都具有默认名称“全部”df2-我通过指定值并使用与上面透视表中使用的相同的索引和列名手动创建的df。本表没有总数。 我需要将第一个数据帧乘以第二个数据帧中的值。我希望总数返回NaN,因为总数不存在于第二个表中。 当我执行乘法运算时,我得到以下错误: