Spark Streaming Dataset <row> collectAsList()花费了太多时间

时间:2017-07-28 13:41:23

标签: java apache-spark-sql spark-streaming

我用Java编写了一个Spark Streaming(2.1.1)驱动程序,用于计算日志并更新MySQL表中的统计信息,插入或更新现有行以及流批处理中的行。 如果我可以使用Dataset Write()方法会很好,但我不能因为有两种方法: - SaveMode.Append:仅用于新行 - SaveMode.Overwrite:无效因为它删除整个表,所以只保存批处理中的行

(我希望有一个&#34; SaveMode.Update&#34; ...)

我通过处理获取所有行并逐个手动插入/更新的数据集来管理这种情况: *数据集dataToWrite     List rows = dataToWrite.collectAsList();     for(行row:rows){         ....插入/更新表     } *

这很好用,我面临的问题是&#34; collectAsList()&#34;每个Rdd执行需要最多2个进行处理,我在Spark Console(SQL)中看到过这个,我认为这是由于收集数据的时间(在Master中执行),但它很奇怪,因为它发生了如果我有一个主人和两个工人在同一台机器或不同的机器。 有人面临这个问题吗?有没有人有任何想法避免这种情况? 提前谢谢,

0 个答案:

没有答案