首先,我在Amazon EMR上使用Spark 1.5.2并在我的postgres数据库中使用Amazon RDS。
我目前正在努力让Spark将其结果写入postgres数据库,我正在使用Spark的jdbc API。虽然它工作正常,但我担心的是,如果我在Spark运行时尝试使用psql连接到db,然后尝试从Spark写入的表中读取,它告诉我还没有写入行。这一直持续到Spark完成,然后突然所有行都出现在db中。
这让我很担心,因为最终设置应该是定期运行Spark脚本,并将更多数据写入数据库,而网站应该使用该数据库。这是否意味着我在Spark运行时无法查询数据库?
你认为这是什么问题?我认为这可能是为db使用更大的实例(我最初使用最小和最便宜的 - db.t2.micro),但我得到了与db.m4.xlarge类实例相同的问题(虽然时间完成这一步骤减半了。
答案 0 :(得分:1)
首先,其他海报是正确的。 Spark正在使用事务来写入数据库,因此在提交事务之前,您不会看到任何数据。
其次,如果您确实需要以较小的批次或单独的写入方式插入数据,您可以随时编写自己的JDBC代码并使用map()操作,尽管这可能并不是一个好主意(但是我不知道你的用例是什么,所以也许你有理由想要这个。)