Неясно, есть ли какие-либо проблемы внутри createConnection
, closeConnection
или connection.sendToTable
, но основная проблема - попытка вложить действия / преобразования. Он не поддерживается в Spark и Spark Streaming не отличается.
Это означает, что вложенная инициализация DataFrame
(val jdbcDF = sqlContext.read.format ...
) просто не может работать и должна быть удалена. Если вы используете его в качестве ссылки, он должен быть создан на том же уровне, что и kafkaDF
, и повторить с помощью стандартных преобразований (unionAll
, join
, ...).
Если по какой-либо причине это не является приемлемым решением, вы можете создать одно соединение JDBC внутри forEachPartition
и работать с таблицей PostgreSQL (я думаю, это то, что вы уже делаете внутри sendToTable
).
Да, что необходимо сделать, включают изображения как вложения, и затем на них можно сослаться в HTML.
Используйте @file_attachment
параметр sp_send_dbmail
У Вас есть две возможности:
<img src="...">
.cid:
URIs.Каждая возможность имеет свои оборотные стороны:
Когда клиенты получения находятся в Вашем управлении (например, та же организация), Вы могли бы согласиться одинаково с так или иначе.
Вы могли попытаться закодировать изображение base64 и сослаться на него непосредственно в теге img в электронной почте ( <img src="data:image/png;base64[your encoded image here...]
) но я думаю, что большинство почтовых клиентов коррелирует эту технику со спамом. Я думаю, что Вы - размещенные изображения более обеспеченной ссылки или просто присоединение его на адрес электронной почты.