Как carbon-relay форматирует данные о маринадах?
Я работаю над созданием инструмента для работы, который прослушивает выходные данные реле Graphite/Carbon и выполняет некоторый анализ. Вывод соответствует спецификации Python pickle, как подробно описано здесь.
Тем не менее, на всю жизнь я не могу описать данные. Я использую Jython (версия 2.7), чтобы попытаться позвонить cPickle.loads
на входе, и он терпит неудачу каждый раз. Я знаю, что Carbon добавляет заголовок к своей полезной нагрузке, но даже после удаления я все еще не могу загрузить данные.
Я попытался удалить все символы Юникода из данных и даже повторил все шаги, пытаясь удалить данные и, в случае неудачи, удалить первый / последний символ и повторить попытку, но безрезультатно.
Я чувствую, что где-то в середине углеродной полезной нагрузки есть некоторые данные, которые мне нужно проанализировать, но документация по их протоколу рассола очень скудна. Если кто-то знаком с Carbon или пробовал что-то подобное, любой совет будет высоко ценится.
Ура,
Комплект
PS вот фрагмент кода, который я использую, чтобы попытаться описать:
public static Object unpickleObject(String pickled)
{
PyString pString = new PyString(pickled);
PyObject loads = (PyObject) cPickle.loads(pString);
return loads.__tojava__(Object.class); //this cast may be redundant
}