Pandas read_ sql очень медленное чтение от Jaydebeapi Netezza - PullRequest
0 голосов
/ 03 августа 2020

Я использую Pandas read sql для чтения таблицы netezza через jdbc / jaydebeapi.

start_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
print(" DB Start Date Time is " + str(start_time))

int_df = pd.read_sql(query,conn)

end_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
print(" DB End Date Time is " + str(end_time))

запрос представляет собой простой запрос * from database.table

I Читаю таблицу с 700К строками и создаю csv (размер 600 МБ при создании); Чтение sql занимает чертовски много времени, чтобы прочитать таблицу базы данных. Дата начала БД Время: 2020-08-03 10: 26: 11.317 Дата окончания БД Время: 2020-08-03 11: 15: 19.841

Как видите, это почти час. Почему это так долго читается?

Я могу прочитать эту таблицу за несколько секунд, используя nz sql, и всего за 5 секунд, используя искровой фрейм данных (включая действие записи в csv). в чем может быть ошибка? У меня нет преобразований - просто извлечение;

У моего сервера нет проблем с памятью; Он имеет более 200 ГБ свободного места в памяти и почти не использует процессор во время выполнения процесса. Что такое узкое место? Есть ли другие лучшие методы для этого?

1 Ответ

0 голосов
/ 25 августа 2020

Возникла аналогичная проблема ... запрос к таблице с 20 миллиардами строк, выполнение запроса read_ sql занимает 20 минут, тогда как в среднем через SSMS требуется всего 25 секунд. Я не уверен, почему (как я нашел ваш вопрос, потому что я пытался понять эту часть), но добавление chunksize в качестве параметра творит чудеса. Я установил 10 ** 5. Запросы упали до среднего значения 22 секунды.

int_df = pd.read_ sql (query, conn, chunksize = 10 ** 5)

Надеюсь, это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...