首先,我在Amazon EMR上使用Spark 1.5.2,并将Amazon RDS用于我的postgres数据库。Spark在写入时是否可以使用SQL数据库?
我目前正致力于让Spark将其结果写入postgres数据库,我通过使用Spark的jdbc API来完成这项工作。虽然它正常工作,但我担心的是,如果我在Spark运行时尝试使用psql连接到数据库,然后尝试从Spark写入的表中读取数据,它会告诉我没有任何已写入的行。这一直持续到Spark完成,然后突然所有的行都出现在db中。
这让我很担心,因为最终设置应该是定期运行Spark脚本,并将更多数据写入数据库,而网站应该使用该数据库。这是否意味着在Spark运行时我无法查询数据库?
你会猜这是什么问题?我认为这可能是一个更大的实例用于数据库的问题(我最初使用最小和最便宜的 - db.t2.micro),但我得到了与db.m4.xlarge类实例相同的问题(尽管时间完成步骤减半)。
学习基础的时间:[事务隔离](http://www.postgresql.org/docs/9.1/static/transaction-iso.html) –
Spark可能使用一个事务来插入所有数据。问题不在于Spark在写入时无法读取任何*,而是因为当您读取时,尚未提交任何数据。 – deceze
@deceze实际上,每个分区都在其自己的事务中单独保存。 – zero323