Проблемы с вставкой DataFrame в InfluxDB с использованием Python

Я пытаюсь вставить очень большой файл CSV в InfluxDB и вставляю его как таковой в Python:

influx_pd = influxdb.DataFrameClient(host, port, user, password, db, verify_ssl=False)

for frame in pd.read_csv(infile, chunksize=batch_count):
    frame.set_index(pd.DatetimeIndex(frame[date_pk]), inplace=True)
    frame.dropna(axis=1, how='all')
    influx_pd.write_points(frame, 'patients')

Однако при первом вызове write_points я получаю эту ошибку (усеченную):

raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"unable to parse 'enroll_pd Pt Id=\"21.0\",Admit Date=\"2010-12-05\", ... MRSA Screening=\"Negative\" 1291507200000000000': invalid field format\nunable to parse ... (ellipses used to truncate)

Я читал о проблемах со значениями InfluxDB и NaN (которые есть в моем CSV-файле), поэтому я попытался вставить значения заполнителей для значений NaN, но получил тот же результат. Может кто-нибудь помочь мне найти проблему в моем коде? Это будет высоко ценится.

Я использую образ докера InfluxDB 1.3 просто для справки.

1 ответ

Таким образом, я понял, что должен был явно указать протокол для json, как таковой:

influx_pd.write_points(frame, measurement='enroll_pd', protocol='json')

в дополнение к заполнению значений NaN (JSON не поддерживает их) методом вменения. Я думал, что документы у меня сложилось впечатление, что JSON по умолчанию, я думаю, что это не так.

Это, конечно, может быть только одно решение. Я приветствую другие, альтернативные решения, которые работают.

Другие вопросы по тегам