Spark: запись в DynamoDB, ограниченная емкость записи - PullRequest
0 голосов
/ 18 мая 2018

Мой вариант использования - запись в DynamoDB из приложения Spark.Поскольку у меня ограниченная емкость записи для DynamoDB и я не хочу увеличивать ее из-за затрат, как я могу ограничить приложение Spark записью с регулируемой скоростью?

Этого можно добиться, сократив разделы до 1, а затем выполнив foreachPartition()?

У меня уже включено автоматическое масштабирование, но я не хочу его увеличивать.

Пожалуйста, предложите другие способы решения этой проблемы.

РЕДАКТИРОВАТЬ: Это должно быть достигнуто, когда приложение Spark работает в многоузловом кластере EMR.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Мы создали собственный источник данных DynamoDB для Spark:

https://github.com/audienceproject/spark-dynamodb

Он обладает множеством элегантных функций:

  • Распределенное параллельное сканированиес ленивой оценкой
  • Управление пропускной способностью путем ограничения скорости на целевую долю выделенной емкости таблицы / индекса
  • Обнаружение схемы в соответствии с вашими потребностями
  • Динамический вывод
  • Статическийанализ класса дел
  • Нажатие на столбец и фильтр
  • Глобальная поддержка вторичного индекса
  • Поддержка записи

Вы определенно можете использовать функцию управления пропускной способностью длядостичь ограниченной емкости записи, которую вы упомянули.Мы будем рады, если вы сможете проверить это, а также оставить отзыв.

0 голосов
/ 18 мая 2018

Планировщик корзины

Я бы хотел создать планировщик корзины в приложении Spark.Шаблон сегмента токенов является общим для проектирования, чтобы гарантировать, что приложение не нарушает ограничения API.Я успешно использовал этот дизайн в очень похожих ситуациях.Вы можете обнаружить, что кто-то написал библиотеку, которую вы можете использовать для этой цели.

Повтор DynamoDB

Еще один (менее привлекательный) вариант - увеличить время повторных попыток подключения к DynamoDB.Если ваша запись не удалась из-за превышения пропускной способности, вы можете по существу дать указание вашему DyanmoDB SDK продолжать повторять попытки сколько угодно долго.Подробности в этом ответе .Эта опция может подать апелляцию, если вы хотите «быстрое и грязное» решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...