NoneBdcsv .py возвращает "Идентификатор зоны времени и даты" 00:00 "не распознан"

Я пытаюсь бежать bdcsv.py:

$ sudo python /opt/bluedata/bundles/bluedata-epic-entdoc-minimal-release-3.7-2207/scripts/monitoring/bdcsv.py \
     -c localhost \
     -f cred.json \
     -s 2018/02/07-00:00:00 \
     -e 2018/02/07-23:59:59

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

Запуск выше возвращает следующую ошибку (я отформатировал json, чтобы сделать его более читабельным):

processing data for virtual node: bluedata-40 ...
error: {  
   "error":{  
      "root_cause":[  
         {  
            "type":"parsing_exception",
            "reason":"[date_histogram] failed to parse field [time_zone]",
            "line":1,
            "col":477
         }
      ],
      "type":"parsing_exception",
      "reason":"[date_histogram] failed to parse field [time_zone]",
      "line":1,
      "col":477,
      "caused_by":{  
         "type":"illegal_argument_exception",
         "reason":"The datetime zone id '00:00' is not recognised"
      }
   },
   "status":400
}

Есть идеи, что здесь происходит?

1 ответ

Решение

Такая же ошибка возникает при запуске bdusage.py,

Похоже, что часовой пояс передан в запрос ElasticSearch в неправильном формате. В обоих сценариях вы найдете следующие строки (я добавил комментарии для уточнения):

tz = time.timezone / 3600 * -1           
if tz < 0:
    tzstr = str(tz).zfill(3) + ":00"     # negative tz will produce strings like "-06:00"
else:
    tzstr = str(tz).zfill(2) + ":00"     # positiv tz will return e.g. "01:00"

tzstr позже будет включен в запрос. Описанная вами ошибка появляется только в том случае, если разница во времени составляет>= 0 часов, поскольку ElasticSearch требует, чтобы часовой пояс был в формате, подобном +01:00 или же -01:00,

Исправьте это, заменив последнюю строку в приведенном выше коде следующим образом:

tzstr = "+" + str(tz).zfill(2) + ":00"    # positiv tz will now return e.g. "+01:00"

Для меня сработало решение установить tzlocal на машине, на которой я запускаю скрипт bdcsv.py:

sudo pip install tzlocal
Другие вопросы по тегам