Skip to content

compute_cugraph / compute_igraph reject polars-bound graphs (LazyFrame and DataFrame) #2025

Description

@lmeyerov

At 0.59.0 (3fb216dd), a graph bound from polars frames cannot run the plugin algorithms:

  • graphistry.edges(pl.scan_parquet(...), 'src', 'dst').compute_cugraph('pagerank') → TypeError: LazyFrame is not subscriptable (aside from slicing) at graphistry/plugins/cugraph.py:161 (self._edges[list(opts.values())]).
  • with an eager pl.DataFrame → ValueError: ('Unsupported edge data type, expected pd/cudf.DataFrame, got: %s', <class 'polars.dataframe.frame.DataFrame'>).

compute_igraph takes the same path (to_igraph indexes the edge frame). GFQL itself accepts both polars forms (the polars / polars-gpu engines bind and query them), so a user who chose polars for ingestion has to re-bind on pandas/cuDF by hand before PageRank.

Expected: to_cugraph / to_igraph convert through the engine seam (Engine.df_to_engine already knows polars → cuDF via Arrow, polars → pandas), collecting a LazyFrame with the target-aware collect.

Seen while building the pyg-bench GraphFrames streaming ladder (LiveJournal → Friendster), where the graph is bound from pl.scan_parquet; the harness now re-binds an eager cuDF/pandas copy outside the timer as a workaround.

Activity

  1. lmeyerov commented on Sep 5, 2026

    @lmeyerov
    ContributorAuthor

    Disposition (0.60 landing phase): feature gap (polars-bound graphs are rejected up front with a typed error). Backlog; the GraphFrames page already states that PageRank on polars frames goes through the pandas/cuDF conversion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions