Я хотел бы использовать Memcache в dafalow ParDo? есть идеи, как это сделать? Я не могу использовать существующую библиотеку memcahse, поскольку она принадлежит appengine и не сериализуема. Рохит
Как использовать memcache в потоке данных?
01.08.2016
- ParDo может выполнять произвольный код, вы можете использовать любые библиотеки, какие захотите, включая библиотеки для доступа к Memcache. Можете ли вы привести пример кода, который вы используете, и ошибок, которые вы получаете? 02.08.2016
- Я пытаюсь использовать API, перечисленные в сервлете по вставленной ссылке ниже, для доступа к кэшу памяти. cloud.google.com/appengine/docs/java/memcache/examples . Я использую это внутри ParDo. Он выдает java.io.NotSerializableException: com.google.appengine.api.memcache.MemcacheServiceImpl в java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 02.08.2016
Ответы:
1
Я предполагаю, что у вас есть частная переменная в вашем DoFn
типа MemcacheServiceImpl
(если мое предположение неверно, отредактируйте свой вопрос, включив в него код вашего DoFn
).
Действительно, Dataflow сериализует ваши DoFn
, когда вы отправляете конвейер, и десериализует их на рабочих процессах. Правильный способ справиться с этим - сделать переменную переходной и лениво инициализировать ее:
class MyDoFn extends DoFn<..., ...> {
private transient MemcacheService memcache;
private MemcacheService getMemcache() {
if (memcache == null) {
memcache = MemcacheServiceFactory.getMemcacheService();
...
}
}
public void process(...) {
...use getMemcache()...
}
}
Также обратите внимание, что для доступа к API AppEngine, включая Memcache, из среды, отличной от AppEngine, следует использовать Удаленный API.
02.08.2016
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..