Прежде всего, я использую Spark 1.5.2 на Amazon EMR и используя Amazon RDS для моей базы данных postgres.Возможно ли использовать базу данных SQL, пока Spark пишет на нее?
В настоящее время я работаю над тем, чтобы Spark записывал свои результаты в базу данных postgres, которую я использую с помощью API-интерфейса Spark jdbc. Хотя он работает правильно, меня беспокоит то, что если я попытаюсь подключиться к db, используя psql во время работы Spark, а затем попытаюсь прочитать из таблицы, на которую пишет Spark, это говорит мне, что еще нет строк. Это сохраняется до тех пор, пока Spark не закончится, а затем внезапно все строки появятся в db.
Это меня беспокоит, потому что конечная настройка должна состоять в том, чтобы регулярно запускать скрипт Spark и записывать больше данных в db, в то время как веб-сайт должен использовать этот db. Означает ли это, что я не смогу запросить db во время работы Spark?
Что вы думаете об этом? Я думал, что это может быть вопрос использования большего экземпляра для db (изначально я использовал самый маленький и самый дешевый - db.t2.micro), но я получаю ту же проблему с экземпляром класса db.m4.xlarge (хотя время для завершения этапа было сокращено наполовину).
Время для изучения основ: [Изоляция транзакций] (http://www.postgresql.org/docs/9.1/static/transaction-iso.html) –
Возможно, Spark использует одну транзакцию для вставки всех данных. Проблема заключается не в том, что вы не можете читать * ничего *, пока Spark пишет, это значит, что когда вы читаете, данные еще не были зафиксированы. – deceze
@deceze Фактически каждый раздел сохраняется отдельно в рамках собственной транзакции. – zero323