Skip to content

[Feature] Support heuristic-aware adaptive polling to avoid getting hit by HTTP 429 #261

Description

@mdrakiburrahman

Is this your first time submitting a feature request?

  • I have searched the existing issues, and I could not find an existing issue for this feature
  • I am requesting a straightforward extension of existing dbt functionality, rather than a Big Idea better suited to a discussion

Describe the feature

The Livy endpoint throttles because it goes through Fabric's front end which has a heavy throttle finger:

Image

For smaller models, this is fine, but for larger, heavy models, this results in wasted compute where the Spark Cluster is not bin packed.

Basically this:

https://github.com/dbt-labs/dbt-adapters/blob/860da89225e2ecf1bf47038f5ac40d4eaa4019a2/dbt-spark/src/dbt/adapters/spark/session.py#L21

Like this:

dbt-labs/dbt-spark#279
dbt-labs/dbt-spark#272

The 2 ways Customers could schedule this is:

  1. Through a Spark Job Definition as a whl file that actually ends up invoking DbtRunner
  2. A notebook, which does the same thing

Describe alternatives you've considered

Livy, but it throttles and is COGS prohibitive

Who will this benefit?

Super bin pack conscious customers

Are you interested in contributing this feature?

Yes

Anything else?

Probably just need to lift and shift the Spark adapter code and make it opt-in.

The Spark dep could be assumed to be provided (since Fabric Spark clusters already have it).

I'd personally end up scheduling an SJD with a whl or perhaps just have a Spark Notebook with minimal code (better logs).

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