在spark-submit

时间:2018-11-23 09:34:27

标签: scala apache-spark

我注意到我的Scala程序无法按预期运行。

基本上,它通过jdbc与一个数据库连接,并调用一个存储过程,该存储过程将加载一个表,该表具有例如1000行(一个一行)。

我的scala程序的下一步是读取该表并进行一些计算。这是出现问题的地方,因为它读取的行较少(例如,大约30条),而不是1000条。

显然,这表明通过spark将应用程序分发到群集中的过程尚未正确等待SP使它完成工作,并且它继续执行下一个预期的指令。

我添加了Thread.sleep(10000),情况有所改善,但是我根本不喜欢使用该替代方法来解决此问题。

我也尝试过仅用一个执行程序来执行应用程序,问题仍然存在。

你们中的有些人也有这个问题?您是如何解决的?

预先感谢


示例代码:

// sp which generates 1000 records in one table in database
mMeta.getConnection().prepareCall("{call " + mMeta.getDatabaseName + ".[dbo].SP_Create1000rows}")

// method which grabs the rows from database created in previous code
Process1000rows()

Process1000rows方法获得约40行,因为它不等待存储过程完成。

但是,如果我在两条指令之间都添加了Thread.sleep(10000),则该方法将占用SP生成的1000行。

希望现在更清楚...

0 个答案:

没有答案