Устранение неполадок при чтении пиарроу в файле Parquet (количество строк правильное, но таблица не содержит строк) - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю в ноутбуке JupyterLab, используя Python 3 с pandas и pyarrow.У меня есть некоторые данные о затратах AWS, хранящиеся в формате Parquet (файл хранится локально).Я пытаюсь прочитать эти данные в Pandas DataFrame с read_parquet:

df = pd.read_parquet(datafile)
len(df.index)

Это возвращает 0, а display(df) подтверждает, что в DataFrame нет строк:

identity_line_item_id   identity_time_interval  bill_invoice_id     ... [156 columns]
-------------------------------------------------------------------------------------
0 rows × 156 columns

Однако, если я попытаюсь проверить файл с помощью pyarrow:

import pyarrow.parquet as pq

pqfile = pq.ParquetFile(datafile)
table = pq.read_table(datafile)

pqfile.metadata

Блокнот покажет:

<pyarrow._parquet.FileMetaData object at 0x119641188>
  created_by: parquet-mr version 1.8.2-SNAPSHOT (build 65c96b16c98f9d933b98681d5f2f9e2410abe85c)
  num_columns: 156
  num_rows: 999841
  num_row_groups: 1
  format_version: 1.0
  serialized_size: 18171

Таким образом, число строк в файле близкодо 1 млн.Однако, если я тогда попытаюсь прочитать строки:

rg = pqfile.read_row_group(0)
rg.num_rows

Последняя строка снова возвращает «0».Какой же результат я получу, если просто позвоню pq.read_table или pq.read_table(...).to_pandas() ( за пример в документации Arrow ).

Я установил parquet-tools и могу прочитатьСхема и метаданные и получить одинаковое количество строк.Но я не получаю никаких строк, считываемых ни в Pandas DataFrame, ни в таблицу Pyarrow.

Впервые работаю с этими данными, поэтому ищу что-то, чтобы попытаться устранить проблему.Есть идеи?

ОБНОВЛЕНИЕ 1: Заметили, что в отчете схемы от parquet-tools ТРЕБУЕТСЯ каждое поле, но когда я использую подкоманду cat, многие поля не имеют видимого значения.Не приведет ли это к тому, что строки не будут загружены?

ОБНОВЛЕНИЕ 2: Коллега успешно прочитал файл в своей среде Python + pyarrow, но, похоже, у него разные пакеты и версии пакетов.Попытка воспроизвести его среду сейчас.

ОБНОВЛЕНИЕ 3: Файл Parquet создается и сохраняется в S3 AWS.Это часть их «Отчетов об издержках и использовании AWS», доступных в их Управлении выставлением счетов.Файл создается для последующей загрузки в Афину, хотя я не использую его таким образом.

ОБНОВЛЕНИЕ 4: Мой код работает сейчас, если я использую Jupyter Notebook (6.0.1).Не работает в JupyerLab (1.1.3).Пытаясь понять, в чем разница ...

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