如何从java计算sparksqlapi上的输入和输出行?

6pp0gazn  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(200)

我试图计算java进程读写的行数。该过程使用sqlapi处理行的数据集。添加 .count() 在不同的点上,它似乎慢了很多,即使我做了很多 .persist() 在这些点之前。
我也看到过这样的代码

.map(row -> {
  accumulator.add(1);
  return row;
}, SomeEncoder)

这工作得很好,但是反序列化和重新序列化整行似乎是不必要的,它不是精神上自动的,因为必须在每个点上找到正确的someencoder。
第三种方法是调用一个进行计数的udf0,然后删除它将返回的虚拟对象,但是我不确定spark是否可以优化整个代码,如果它能告诉udf0没有改变输出。
有没有一种不反序列化行的好方法?或者,有没有一种方法可以等效于java的streams .peek() 返回的数据在哪里不重要?
编辑:澄清一下,这份工作不仅仅是计算。清点只是为了记录在案。工作就是做其他事情。事实上,这是一个非常普遍的问题,我有很多作业正在对数据进行一些转换并将它们保存在某个地方,我只想保持这些作业读写了多少行的运行记录。
谢谢您

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题