2016-09-13 2 views
1

У меня есть блок обработки внутри моего метода dStream.foreachRDD, и эта обработка включает в себя сохранение mysql с использованием spark sql. Опубликовать, что я сохраняю последнее обработанное смещение в другой схеме/таблице. Я хочу сделать весь блок транзакционным (scala). Как это сделать? Ниже приводятся соответствующие выдержки из кода:Транзакционный блок | Spark SQL, rdd

.foreachRDD (rdd => {........... ................. ..................

df.write.mode ("append") .jdbc (url + rawstore_schema + "? RewriteBatchedStatements = true", tablesToFetch (index) , connectionProperties)

.................... metricsStatement.executeUpdate ("Вставить в metrics.txn_offsets (topic, part, off, date_updated) значения (. ..........................

как операции записи (обработанные данные и данные смещения) выполняются на двух разных БД/соединениях, как сделать их транзакционными?

Thanks

ответ

1

У меня был такой же вопрос. Просматривая код Spark (до версии 2.1), это не представляется возможным, нет возможности указать управление транзакциями.

Подробнее в моем другом ответе здесь: https://stackoverflow.com/a/42964361/47551