Я работаю в ноутбуке 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).Пытаясь понять, в чем разница ...