Стрелка Apache, выравнивание массива numpy с нулевой копией

Я конвертирую объект стрелки с «нулевой копией» в панду, но объект результата не выровнен.

#create a pyarrow.table.Table from parquet file
pq_file=pq.ParquetFile(parquet_file_name)
arrow_table=pq_file.read()

#convert pyarrow.table.Table to panda with zero copy
df=arrow_table.to_pandas(zero_copy_only=True)

#check if the numpy array is aligned :
print("alignment: {}".format(df.as_matrix().__array_interface__['data'[0]%64))

Код возврата: alignment: 16

Вывод: массив NumPy не выровнен. Когда я конвертирую pyarrow.table.Table в панду с «нулевой копией», я прихожу к выводу, что сам pyarrow.table.Table не выровнен. Где я не прав?


person frederic Gillardo    schedule 26.02.2018    source источник
comment
Связано: stackoverflow.com/q/48830024/1531971   -  person    schedule 26.02.2018


Ответы (1)


Ответ от уве:

  1. Я не уверен, правильно ли работает флаг zero_copy_only в Arrow 0.8, недавно мы внесли некоторые исправления (но еще не выпустили их).
  2. В предстоящем выпуске есть новое свойство buffers, где вы также можете проверить адрес памяти PyArrow Arrow. Это полезно для проверки в Python, что нулевая копия действительно была нулевой копией.
  3. Вы должны знать, что df.as_matrix() также может сделать копию, если у вас нет DataFrame с одним DType.
person frederic Gillardo    schedule 09.03.2018