Возникла странная проблема, когда фрейму H2O не удалось получить свое свойство frame_id
из кластера.
Иметь процесс, который выполняет фиксированный цикл, где он выполняет некоторую обработку в кадре h2o c
, затем связывает строку с другим кадром a
, чтобы сохранить память в кластере, я хочу удалить "старую версию" "из a
до привязки строки, поэтому использование другого кадра b
в качестве указателя на старый a
, который удаляется после того, как привязка строки возвращает другой кадр, которому назначен объект. Например.
# in some for loop
...
b = a.frame_id
print '1. %s, %s' % (a.frame_id, b)
a = a.rbind(c)
print '2. %s, %s' % (a.frame_id, b)
h2o.remove(b)
...
Вывод, который я вижу, выглядит как
1. Key_Frame__upload_bce99720cff0008f4b44c6c71dd54c0d.hex, Key_Frame__upload_bce99720cff0008f4b44c6c71dd54c0d.hex
2. py_2_sid_b35e, Key_Frame__upload_bce99720cff0008f4b44c6c71dd54c0d.hex
1. py_2_sid_b35e, py_2_sid_b35e
H2OResponseError: Server error java.lang.IllegalArgumentException:
Error: Name lookup of 'Key_Frame__upload_bce99720cff0008f4b44c6c71dd54c0d.hex' failed
Request: POST /99/Rapids
data: {u'session_id': '_sid_b35e', u'ast': '(tmp= py_3_sid_b35e (rbind Key_Frame__upload_bce99720cff0008f4b44c6c71dd54c0d.hex X7924123d_f1eb_46a8_bf2a_59cfbc5b887c.hex X44795656_48aa_4b77_a5b1_6948d733473e.hex))'}
Тот факт, что сообщения об ошибках ссылаются (предположительно) на ранее удаленную строку идентификатора объекта, заставляет меня думать, что это какая-то проблема многопоточности с кластером (как будто он не может сразу получить frame_id
для результата rbind
кадр) (особенно, поскольку эта проблема не появляется при запуске кода в режиме отладки в моей среде IDE, только при работе в обычном режиме ). Вызовы h2o.import()
асинхронные или неблокирующие или что-то еще? Так что обратите внимание, что если бы оператор print не был там, чтобы поймать ошибку, remove()
просто выбросил бы его вместо этого и не смог бы удалить старый кадр в экземпляре h2o. Кто-нибудь знает, что здесь может происходить?