当前位置: 首页 > 面试题库 >

计算RDD中的行数

巩衡
2023-03-14
问题内容

我在Java中使用spark,并且具有500万行的RDD。有没有一种解决方案可以让我计算RDD的行数。我已经尝试过,RDD.count()但是要花很多时间。我已经知道我可以使用该功能fold。但是我没有找到此功能的Java文档。您能否请教我如何使用它,或给我另一个解决方案以获取RDD的行数。

这是我的代码:

JavaPairRDD<String, String> lines = getAllCustomers(sc).cache();
JavaPairRDD<String,String> CFIDNotNull = lines.filter(notNull()).cache();
JavaPairRDD<String, Tuple2<String, String>> join =lines.join(CFIDNotNull).cache();

double count_ctid = (double)join.count(); // i want to get the count of these three RDD
double all = (double)lines.count();
double count_cfid = all - CFIDNotNull.count();
System.out.println("********** :"+count_cfid*100/all +"% and now : "+ count_ctid*100/all+"%");

谢谢。


问题答案:

您有一个正确的想法:用于rdd.count()计算行数。没有更快的方法。

我认为您应该问的问题是 为什么rdd.count()这么慢?

答案是rdd.count()“动作”,这是一个急切的操作,因为它必须返回实际的数字。您之前执行的RDD操作count()是“转换”-他们将RDD延迟地转换为另一个。实际上,转换实际上并没有执行,只是排队。调用时count(),您将强制执行所有先前的惰性操作。输入的文件需要立即加载,执行map()s和filter()s,执行随机播放等,直到最后我们有了数据并可以说出它有多少行。

请注意,如果您拨打count()两次,所有这些都会发生两次。返回计数后,所有数据都将被丢弃!如果要避免这种情况,请调用cache()RDD。然后,对的第二次调用count()将很快,并且派生的RDD也会更快地计算出来。但是,在这种情况下,RDD必须存储在内存(或磁盘)中。



 类似资料:
  • 问题内容: 我想使用Go显示数据库中的行数。如何显示行数? 问题答案: 查询将在变量计数中返回一行。因此,下一个要做的就是读取该行,并使用函数将结果分配到新变量中。这就是它的工作方式。 最好的选择是使用,因为您希望只读取一行。代码将是。

  • 问题内容: 我有这个MySQL查询: 返回如下内容: 我真正想要的是末尾的另一列以显示运行总计: 这可能吗? 问题答案: 也许对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一些数学运算。 这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行中的total变量,否则您将只获得一列NULL值。

  • 问题内容: 我通常使用大约20 Gb大小的文本文件,并且发现自己经常对给定文件中的行数进行计数。 我现在做的只是,而且需要很长时间。有什么解决方案会更快吗? 我在安装了Hadoop的高性能集群中工作。我想知道地图缩小方法是否可以提供帮助。 我希望解决方案像解决方案一样简单,只需一条生产线,但不确定其可行性。 有任何想法吗? 问题答案: 尝试: 猫也是不必要的:用您现在的方式就足够了。

  • 问题内容: 在没有应用任何条件的情况下,对表中的行总数进行计数的最佳MySQL命令是什么?我正在通过php执行此操作,所以也许有一个php函数可以为我执行此操作?我不知道。这是我的php的示例: 问题答案:

  • 问题内容: 我已经从我的视图向模板发送了一个变量,该变量包含数据库中的数据 这就是我在模板中使用的 此循环中有七个条目,我需要显示计数租约建议如何执行此操作 问题答案: 在循环中,你可以访问一个名为的特殊变量,并且可以看到带有 这就是循环辅助变量所能做的一切: loop.index 循环的当前迭代。(1个已索引) loop.index0 循环的当前迭代。(0索引) loop.revindex 从循

  • 问题内容: 我有大型文本文件,范围在和之间。如何使用来计算文件中的行数? 我有这些限制: 整个文件不需要写入内存 不需要子进程来执行任务 问题答案: 不使用wc的解决方案: 速度较慢,但​​您可能没有想到的那么多-140M +文件的传输时间为0.6秒,包括node.js加载和启动时间