apache / apache/arrow

[Python] pa.DictionaryArray.from_arrays(..) can't convert large numpy / ndarrays

Abierto
#47,246 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Component: Python Type: bug
Lenguaje dominante
C++
Estrellas
17.1k
Forks
4.3k
Merge medio
3 d 23 h
PR fusionados (30 d)
101

Descripción

### Describe the bug, including details regarding any error messages, version, and platform.

Numpy arrays seem to get converted with pyarrow.array(..) either to pyarrow.Array OR pyarrow.ChunkedArray depending on its' size according to the documentation.

The pa.DictionaryArray.from_arrays(..) is also specified, that it can treat ndarrays, but in case the ndarray is a large object, there is an internal exception which is not able to treat the ChunkedArray object.

```
import pyarrow as pa
import numpy as np

# 300 MB binary blobs × 10 = 3 GB of total data
blob = b'x' * (300 * 1024 * 1024)
data = [blob] * 10
a = (np.array(data))

# test conversion to pyarrow array
print(type(pa.array(a))) # -> pyarrow.lib.ChunkedArray

indices = np.array(list(range(10)))

# this throws an error, even if a is a legit numpy array
pa.DictionaryArray.from_arrays(indices, a)

'''
------- RESULT ----------
Traceback (most recent call last):
File "", line 1, in
File "pyarrow\\array.pxi", line 4091, in pyarrow.lib.DictionaryArray.from_arrays
TypeError: Cannot convert pyarrow.lib.ChunkedArray to pyarrow.lib.Array
'''
``

### Component(s)

Python

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comience con el reproductor proporcionado usando pa.array(a) y DictionaryArray.from_arrays(indices, a), confirmando que un ndarray grande de NumPy se convierte en un ChunkedArray. Rastree los puntos de entrada de los bindings de Python para estas dos APIs y determine cómo debería gestionarse el caso de ChunkedArray; se considera terminado cuando los ndarrays grandes ya no generan el TypeError indicado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
numpy, python
Área
data
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.