es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede pasar la tabla `pyarrow` a `arrow::Table`.

Estoy intentando pasar una tabla de pyarrow a c++ a través de pybind11. En este ejemplo, simplemente estoy tratando de imprimir el número de filas de una tabla de pyarrow pasada desde python.


#include <pybind11 pybind11.h=""> #include <python.h> #include <iostream> #include <arrow python/pyarrow.h=""> // Convertir la tabla de pyarrow a objeto nativo de C++ e imprimir su contenido void print_table(PyObject* pytable) { // convertir pyobject a tabla auto status = arrow::py::unwrap_table(pytable); if (!status.ok()) { std::cout << "Error convirtiendo tabla de pyarrow a tabla de arrow" << std::endl; return; } std::shared_ptr<arrow::table> table = status.ValueOrDie(); std::cout << "La tabla tiene " << table->num_rows() << " filas" << std::endl; } PYBIND11_MODULE(df_test, m) { arrow::py::import_pyarrow(); m.doc() = "Extensiones de Pyarrow"; m.def("print_table", &print_table); }

Sin embargo, obtengo el siguiente error:


error: acceso a miembro en un tipo incompleto 'std::shared_ptr::element_type' (también conocido como 'arrow::Table')
std::cout << "La tabla tiene " << table->num_rows() << " filas" << std::endl;

¿Cómo puedo solucionar este error?</python.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque std::shared_ptr<arrow::table>::element_type es un tipo incompleto en el punto donde se está llamando a num_rows(). Para solucionar este error, necesitamos incluir el archivo de encabezado arrow/table.h para asegurarnos de que arrow::Table sea un tipo completo.

    Agregue la siguiente línea al inicio del archivo:

    #include <arrow table.h="">
    

    Luego, vuelva a compilar el módulo y el error debería resolverse.

Comments are closed.