JDBC-verbinding

Opmerking

Deze functie bevindt zich in openbare preview voor Databricks Runtime 18.1 en DBSQL 2025.40 en hoger. Voor SQL-warehouses moet u zich ook aanmelden voor het inschakelen van netwerken voor geïsoleerde workloads in de preview-versie van Serverloze SQL Warehouses .

Azure Databricks biedt ondersteuning voor het maken van verbinding met externe databases met behulp van JDBC. U kunt een JDBC Unity Catalog-verbinding gebruiken om een gegevensbron te lezen en schrijven met de Spark-gegevensbron-API of de SQL-API van Azure Databricks Remote Query. De JDBC-verbinding is een beveiligbaar object in Unity Catalog waarmee het JDBC-stuurprogramma, het URL-pad en de referenties voor toegang tot een externe database worden opgegeven. De JDBC-verbinding wordt ondersteund in rekentypen van Unity Catalog, waaronder serverloze, standaardclusters, toegewezen clusters en Databricks SQL.

Voordelen van het gebruik van een JDBC-verbinding

  • Lees en schrijf naar gegevensbronnen met behulp van JDBC met de Spark-gegevensbron-API.
  • Lees uit gegevensbronnen met JDBC met behulp van de SQL-API voor externe query's.
  • Toegang tot de gegevensbron beheerd met behulp van een Unity Catalog-verbinding.
  • Maak de verbinding één keer en gebruik deze opnieuw op alle Unity Catalog-rekenprocessen.
  • Stabiel voor Spark- en rekenupgrades.
  • Verbindingsreferenties zijn verborgen voor de querygebruiker.

JDBC versus query federatie

JDBC is een aanvulling op Query Federation. Databricks raadt aan om queryfederatie om de volgende redenen te kiezen:

  • Queryfederatie biedt verfijnd toegangsbeheer en governance op tabelniveau met behulp van een externe catalogus. JDBC Unity Catalog-verbinding biedt alleen beheer op verbindingsniveau.
  • Queryfederatie pusht Spark-query's omlaag voor optimale queryprestaties.

Opmerking

Queryfederatie ondersteunt veel populaire databases, waaronder Oracle, MySQL, PostgreSQL, SQL Server en Snowflake. Als uw database wordt ondersteund, raadt Databricks aan om queryfederatie te gebruiken in plaats van een JDBC-verbinding. Zie Lakehouse Federation voor de volledige lijst met ondersteunde databases.

Kies er echter voor om een JDBC Unity Catalog-verbinding te gebruiken in de volgende scenario's:

  • Uw database wordt niet ondersteund door query-federatie.
  • U wilt een specifiek JDBC-stuurprogramma gebruiken.
  • U moet schrijven naar de databron met Spark (queryfederatie biedt geen ondersteuning voor schrijfbewerkingen).
  • U hebt meer flexibiliteit, prestaties en parallellisatiebeheer nodig via opties voor spark-gegevensbron-API.
  • Als u SQL-bronquery's wilt doorsturen met de Spark-optie query.

Waarom JDBC versus PySpark-gegevensbronnen gebruiken?

PySpark-gegevensbronnen zijn een alternatief voor de JDBC Spark-gegevensbron.

Een JDBC-verbinding gebruiken:

  • Als u de ingebouwde Ondersteuning voor Spark JDBC wilt gebruiken.
  • Als u een out-of-the-box JDBC-stuurprogramma wilt gebruiken dat al bestaat.
  • Als u Unity Catalog-governance nodig hebt op verbindingsniveau.
  • Als u verbinding wilt maken vanaf elk rekentype van Unity Catalog: serverloos, standaard, toegewezen, SQL-API.
  • Als u uw verbinding wilt gebruiken met Python-, Scala- en SQL-API's.

Een PySpark-gegevensbron gebruiken:

  • Als u de flexibiliteit wilt hebben om uw Spark-gegevensbron of -sink te ontwikkelen en te ontwerpen met behulp van Python.
  • Als u het alleen gebruikt in notebooks of PySpark workloads.
  • Als u aangepaste partitioneringslogica wilt implementeren.

JDBC- en PySpark-gegevensbronnen maken geen statistieken beschikbaar voor de queryoptimalisatie om de volgorde van bewerkingen te helpen selecteren.

Hoe het werkt

Als u verbinding wilt maken met een gegevensbron met behulp van een JDBC-verbinding, installeert u het JDBC-stuurprogramma op Spark Compute. Met de verbinding kunt u het JDBC-stuurprogramma opgeven en installeren in een geïsoleerde sandbox die toegankelijk is voor Spark-rekenkracht om te zorgen voor Spark-beveiliging en Unity Catalog-governance. Zie Hoe dwingt Databricks gebruikersisolatie af voor meer informatie over sandboxing.

Voordat u begint

Als u een JDBC-verbinding wilt gebruiken met de Spark-gegevensbron-API op serverloze en standaardclusters, moet u eerst voldoen aan de volgende vereisten:

Vereisten voor werkruimte:

  • Een Azure Databricks-werkruimte ingeschakeld voor Unity Catalog

Rekenvereisten:

  • Netwerkconnectiviteit van uw rekenresource naar het doeldatabasesysteem. Zie Netwerkconnectiviteit.
  • Azure Databricks Compute moet serverloos of Databricks Runtime 17.3 LTS of hoger gebruiken in de standaardmodus of toegewezen toegangsmodus.
  • SQL-warehouses moeten pro of serverloos zijn en moeten 2025.35 of hoger gebruiken.

Vereiste machtigingen:

  • Als u een verbinding wilt maken, moet u beschikken over de CREATE CONNECTION bevoegdheid voor de metastore die is gekoppeld aan de werkruimte.
  • CREATE ofwel MANAGE toegang tot een Unity Catalog-volume door degene die de verbinding heeft gemaakt.
  • Volumetoegang door de gebruiker die een query op de verbinding uitvoert.
  • Aanvullende machtigingen worden gespecificeerd in elke taakgebaseerde sectie die volgt.

Verificatiemethoden

Statisch aanmeldingsgegeven

Met statische referentieverificatie worden referenties rechtstreeks op de verbinding opgeslagen, bijvoorbeeld een gebruikersnaam en wachtwoord, een API-sleutel of een ander referentieveld dat wordt geaccepteerd door het JDBC-doelstuurprogramma. De inloggegevens worden ongewijzigd doorgegeven aan het JDBC-stuurprogramma wanneer de verbinding wordt gebruikt.

OAuth machine-to-machine

Important

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

OAuth M2M-verificatie (Machine-to-Machine) wordt gebruikt wanneer twee systemen of toepassingen communiceren zonder directe tussenkomst van de gebruiker. Tokens worden uitgegeven aan een geregistreerde computerclient die eigen referenties gebruikt om te verifiëren. Deze verificatiemethode is ideaal voor service-naar-service-communicatie, microservices en automatiseringstaken waarin geen gebruikerscontext nodig is.

Wanneer de JDBC-verbinding gebruikmaakt van OAuth M2M, wisselt Unity Catalog de clientreferenties uit op het geconfigureerde tokeneindpunt en geeft alleen het resulterende kortstondige toegangstoken door aan het JDBC-stuurprogramma met behulp van de tokenparameter van het stuurprogramma.

Stap 1: Een volume maken en de JDBC JAR installeren

De JDBC-verbinding leest en installeert de JAR van het JDBC-stuurprogramma van een Unity Catalog-volume.

  1. Als u geen schrijf- en leestoegang tot een bestaand volume hebt, maakt u een nieuw volume:

    CREATE VOLUME IF NOT EXISTS my_catalog.my_schema.my_volume_JARs
    
  2. Upload de JDBC-driver-JAR naar het volume.

  3. Leestoegang verlenen aan de gebruikers die een query uitvoeren op de specifieke verbinding:

    GRANT READ VOLUME ON VOLUME my_catalog.my_schema.my_volume_JARs TO `account users`
    

Stap 2: een JDBC-verbinding maken

Een JDBC-verbinding is een beveiligbaar object in Unity Catalog. Hiermee geeft u het JDBC-stuurprogramma, het URL-pad, referenties voor toegang tot een extern databasesysteem en toegestane opties op die de querygebruiker kan opgeven. Als u een verbinding wilt maken, gebruikt u Catalog Explorer of de CREATE CONNECTION SQL-opdracht in een Azure Databricks-notebook of de Databricks SQL-queryeditor. Zie verificatiemethoden voor de ondersteunde verificatiemethoden.

Opmerking

U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een verbinding te maken. Zie POST /api/2.1/unity-catalog/connections en Unity Catalog-opdrachten.

Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION bevoegdheid.

Voordat u een verbinding maakt, moet u rekening houden met het volgende:

  • De URL en referenties zijn de enige vereiste opties. Sluit referenties niet in de URL in, omdat logboeken of fouten deze kunnen weergeven. Gebruik de toegewezen referentieopties voor de gekozen verificatiemethode.
  • Gebruik externalOptionsAllowList deze optie om te bepalen welke Spark-gegevensbronopties gebruikers tijdens de query kunnen opgeven. Als dit niet is opgegeven, wordt de standaardwaarde 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'. Stel deze in op een lege tekenreeks om gebruikers te beperken tot alleen de opties die in de verbinding zijn gedefinieerd. Gebruikers kunnen nooit url of host specificeren.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op het pictogram Gegevens.Catalogus.

  2. Klik op het pictogram Plug.Maak verbinding en klik vervolgens op Verbindingen.

  3. Klik op Verbinding maken.

  4. Voer op de pagina Verbindingsbeginselen van de wizard Verbinding instellen een gebruiksvriendelijke verbindingsnaam in.

  5. Selecteer JDBC voor verbindingstype.

  6. (Optioneel) Voeg een opmerking toe.

  7. Klik op Volgende.

  8. Voer op de pagina Verbindingsgegevens de volgende verbindingseigenschappen in:

    Property Description
    URL De JDBC-URL voor uw database, in de vorm jdbc:subprotocol:subname (bijvoorbeeld jdbc:oracle:thin:@<host>:<port>:<SID>).
    Java-afhankelijkheden De JAR-bestanden van het JDBC-stuurprogramma van Unity Catalog-volumes. Klik op JAR-afhankelijkheid toevoegen om elke JAR toe te voegen (bijvoorbeeld /Volumes/<catalog>/<schema>/<volume_name>/ojdbc11.jar).
    Lijst met toegestane externe opties Door komma's gescheiden lijst met opties voor Spark-gegevensbronnen die gebruikers kunnen opvragen tijdens de query. Wordt standaard ingesteld op dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions. Ingesteld op een lege waarde om gebruikers te beperken tot alleen de opties die zijn gedefinieerd voor de verbinding.
    Aanvullende opties Willekeurige opties voor JDBC-stuurprogramma's die als sleutel-waardeparen aan het stuurprogramma worden doorgegeven. Gebruik deze sectie om databasereferenties (bijvoorbeeld sleutel user en sleutel password) en andere stuurprogrammaspecifieke eigenschappen in te stellen. Schakelen tussen ui - en JSON-invoermodi , indien nodig.
  9. Klik op Verbinding maken.

OAuth Machine-to-Machine (bèta)

Important

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

Wanneer de jdbc_oauth_m2m_connector previewfunctie is ingeschakeld in uw werkruimte, wordt het veld Type verificatie weergegeven op de pagina Basisinstellingen voor verbindingen met de opties Statische referentie en OAuth machine-naar-machine. Een OAuth M2M JDBC-verbinding maken:

  1. Stel op de pagina Basisprincipes van verbindingenVerificatietype in op OAuth machine-naar-machine.

  2. Klik op Volgende.

  3. Voer op de pagina Verbindingsgegevens de volgende eigenschappen in naast URL en Java afhankelijkheden:

    Property Description
    Client-ID De OAuth-client-id die is uitgegeven voor de toepassing.
    Geheim van de klant Het OAuth-clientgeheim dat is uitgegeven voor de toepassing.
    OAuth-bereik Scope die moet worden aangevraagd tijdens de token-uitwisseling. Uitgedrukt als een door spaties gescheiden lijst met hoofdlettergevoelige tekenreeksen.
    Tokeneindpunt Het OAuth 2.0-tokeneindpunt dat wordt gebruikt voor het uitwisselen van de clientreferenties voor een toegangstoken. Meestal in de indeling https://authorization-server.com/oauth/token.
    Exchange-methode voor OAuth-referenties Hoe de clientreferenties worden doorgegeven aan het tokeneindpunt:
    • header_and_body — inloggegevens worden verzonden in zowel de Authorization header als de aanvraagtekst (standaard).
    • body_only — inloggegevens worden alleen in de hoofdtekst van de aanvraag verzonden.
    • header_only : referenties worden alleen in de Authorization header verzonden.
    Parameternaam van JDBC-token De eigenschap KEY die vereist is zodat het JDBC-doelstuurprogramma het OAuth-toegangstoken accepteert. Azure Databricks deze parameterWAARDE dynamisch vult met een gegenereerd geldig OAuth-toegangstoken. Gebruikelijke KEYs: access_token, oauthToken, of password. Raadpleeg de documentatie van het JDBC-stuurprogramma voor de juiste parameterSLEUTELnaam .
  4. Klik op Verbinding maken.

SQL

Gebruik de SQL-opdracht CREATE CONNECTION in een notebook of de Sql-queryeditor van Databricks.

Statisch aanmeldingsgegeven

Voer de volgende opdracht uit, waarbij je het overeenkomstige volume, de URL, de inloggegevens en externalOptionsAllowList aanpast:

DROP CONNECTION IF EXISTS <JDBC-connection-name>;

CREATE CONNECTION <JDBC-connection-name> TYPE JDBC
ENVIRONMENT (
  java_dependencies '["/Volumes/<catalog>/<Schema>/<volume_name>/JDBC_DRIVER_JAR_NAME.jar"]'
)
OPTIONS (
  url 'jdbc:<database_URL_host_port>',
  user '<user>',
  password '<password>',
  externalOptionsAllowList 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'
);

DESCRIBE CONNECTION <JDBC-connection-name>;

Voorbeeld: Oracle JDBC-verbinding

In het volgende voorbeeld wordt een JDBC-verbinding met een Oracle-database gemaakt met behulp van het thin-stuurprogramma van Oracle. Download het ORACLE JDBC-stuurprogramma JAR (bijvoorbeeld ojdbc11.jar) van de downloadpagina van Oracle JDBC en upload het naar een Unity Catalog-volume voordat u deze opdracht uitvoert.

CREATE CONNECTION oracle_connection TYPE JDBC
ENVIRONMENT (
  java_dependencies '["/Volumes/my_catalog/my_schema/my_volume_JARs/ojdbc11.jar"]'
)
OPTIONS (
  url 'jdbc:oracle:thin:@<host>:<port>:<SID>',
  user '<oracle_user>',
  password '<oracle_password>',
  externalOptionsAllowList 'dbtable,query'
);
OAuth-machine naar machine

Voer de volgende opdracht uit, waarbij je het overeenkomstige volume, de URL, de inloggegevens en externalOptionsAllowList aanpast:

CREATE CONNECTION <JDBC-connection-name> TYPE JDBC
ENVIRONMENT (
  java_dependencies '["/Volumes/<catalog>/<schema>/<volume_name>/JDBC_DRIVER_JAR_NAME.jar"]'
)
OPTIONS (
  url 'jdbc:<database_URL_host_port>',
  client_id '<client-id>',
  client_secret '<client-secret>',
  oauth_scope '<scope>',
  token_endpoint '<https://authorization-server.com/oauth/token>',
  oauth_credential_exchange_method 'header_and_body',
  jdbc_token_parameter_name '<driver-token-parameter-name>',
  externalOptionsAllowList 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'
);

Voorbeeld: PostgreSQL JDBC-verbinding met OAuth M2M

In het volgende voorbeeld wordt een JDBC-verbinding met een PostgreSQL-database gemaakt met behulp van OAuth Machine-naar-Machine-verificatie. Download de PostgreSQL JDBC-stuurprogramma-JAR (bijvoorbeeld postgresql-42.7.3.jar) van de postgreSQL JDBC-downloadpagina en upload deze naar een Unity Catalog-volume voordat u deze opdracht uitvoert. Voor PostgreSQL-implementaties die zijn geconfigureerd voor het accepteren van een OAuth-toegangstoken in het wachtwoordveld, ingesteld jdbc_token_parameter_name op password.

CREATE CONNECTION postgres_oauth_connection TYPE JDBC
ENVIRONMENT (
  java_dependencies '["/Volumes/my_catalog/my_schema/my_volume_JARs/postgresql-42.7.3.jar"]'
)
OPTIONS (
  url 'jdbc:postgresql://<host>:<port>/<database>?sslmode=require',
  client_id '<client-id>',
  client_secret '<client-secret>',
  oauth_scope '<scope>',
  token_endpoint 'https://authorization-server.com/oauth/token',
  oauth_credential_exchange_method 'header_and_body',
  jdbc_token_parameter_name 'password',
  externalOptionsAllowList 'dbtable,query'
);

De eigenaar of manager van de verbinding kan alle extra opties toevoegen die worden ondersteund door het JDBC-stuurprogramma. Om veiligheidsredenen kunnen opties die in de verbinding zijn gedefinieerd, niet worden overschreven tijdens het uitvoeren van query's.

Stap 3: De USE bevoegdheid verlenen

Verleen de USE bevoegdheid op de verbinding aan de gebruikers:

GRANT USE CONNECTION ON CONNECTION <connection-name> TO <user-name>;

Zie Verbindingen beheren voor Lakehouse Federation voor informatie over het beheren van bestaande verbindingen.

Stap 4: Een query uitvoeren op de gegevensbron

Gebruikers met de USE CONNECTION bevoegdheid kunnen gegevensbronnen bevragen met behulp van de JDBC-verbinding via Spark of de SQL API voor externe queries. Gebruikers kunnen spark-gegevensbronopties toevoegen die worden ondersteund door het JDBC-stuurprogramma en die zijn opgegeven in de externalOptionsAllowList JDBC-verbinding (bijvoorbeeld in dit geval: 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'). Voer de volgende query uit om de toegestane opties weer te geven:

DESCRIBE CONNECTION <JDBC-connection-name>;

Python

df = (
  spark.read.format('jdbc')
  .option('databricks.connection', '<JDBC-connection-name>')
  .option('query', 'select * from <table_name>') # query in source SQL language - Option specified by querying user
  .load()
)

df.display()

SQL

SELECT * FROM
remote_query('<JDBC-connection-name>', query => 'SELECT * FROM <table>'); -- query in source SQL language - Option specified by querying user

Migration

Databricks raadt het volgende aan om te migreren van bestaande Spark-gegevensbron-API-workloads:

  • Verwijder de URL en referenties uit de opties in de Spark-gegevensbron-API.
  • Voeg de databricks.connection opties toe in de Spark-gegevensbron-API.
  • Maak een JDBC-verbinding met de bijbehorende URL en referenties.
  • In de connectie, specificeer de opties die statisch moeten zijn en niet mogen worden opgegeven door gebruikers.
  • Geef in de verbinding externalOptionsAllowListde opties voor de gegevensbron op die moeten worden aangepast of gewijzigd door de gebruikers tijdens de query in de API-code van de Spark-gegevensbron (bijvoorbeeld 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions').

Beperkingen

Spark-gegevensbron-API

  • URL en host kunnen niet worden opgenomen in de Spark-gegevensbron-API.
  • .option("databricks.connection", "<Connection_name>") is vereist.
  • Opties die in de verbinding zijn gedefinieerd, kunnen niet worden gebruikt voor de Gegevensbron-API in uw code tijdens de query.
  • Alleen de opties die in de externalOptionsAllowList opties zijn opgegeven, kunnen worden gebruikt door gebruikers op te vragen.
  • De geheugenlimiet voor het JDBC-stuurprogramma is 400 MiB. Overweeg een kleinere fetchSize limiet te gebruiken als de limiet is bereikt.
  • De Spark JDBC-gegevensbron biedt geen ondersteuning voor willekeurige DML-instructies, zoals UPDATE of DELETE, voor de externe database. Het ondersteunt het lezen van gegevens en het toevoegen of overschrijven van hele tabellen, niet wijzigingen op rijniveau.

Support

  • Spark-gegevensbronnen worden niet ondersteund.
  • Lakeflow-pijplijnen worden niet ondersteund.
  • Verbindingsafhankelijkheid bij het maken: java_dependencies alleen volumelocaties voor JDBC-stuurprogramma-JAR's ondersteunen.
  • Afhankelijkheid van verbinding bij query: De verbindingsgebruiker heeft READ toegang nodig tot het volume waar de JDBC-driver JAR zich bevindt.
  • In de toegewezen toegangsmodus (voorheen modus voor toegang van één gebruiker) moet u een eigenaar of manager van de verbinding zijn om deze te kunnen gebruiken.
  • SSL-certificaten worden niet ondersteund.
  • Buitenlandse catalogi worden niet ondersteund met JDBC-verbindingen.

Authenticatie

  • Deze connector ondersteunt statische referenties en OAuth-machine-naar-machine. Het ondersteunt geen Unity Catalog-inloggegevens of service-inloggegevens.

Networking

  • Het doeldatabasesysteem en de Azure Databricks werkruimte kunnen zich niet in hetzelfde VNet bevinden.

Netwerkverbinding

Netwerkconnectiviteit van uw rekenresource naar het doeldatabasesysteem is vereist. Zie De aanbevelingen voor netwerken voor Lakehouse Federation voor algemene netwerkrichtlijnen.

Klassieke berekening: standaard- en toegewezen clusters

Azure Databricks VNets zijn geconfigureerd om alleen Spark-clusters toe te staan. Als u verbinding wilt maken met een andere infrastructuur, plaatst u het doeldatabasesysteem in een ander VNet en gebruikt u VNet-peering. Nadat VNet-peering tot stand is gekomen, controleer de connectiviteit met behulp van de connectionTest UDF op het cluster of de warehouse.

Als uw Azure Databricks werkruimte- en doeldatabasesystemen zich in hetzelfde VNet bevinden, raadt Databricks een van de volgende opties aan:

  • Gebruik serverloze berekeningen.
  • Configureer uw doeldatabase om TCP- en UDP-verkeer via poort 80 en 443 toe te staan en geef deze poorten op in de verbinding.

Serverless

Wanneer u uw JDBC-verbinding op serverloze berekeningen gebruikt, kunt u een firewall configureren voor serverloze rekentoegang tot het doeldatabasesysteem door uitgaande IP-adressen toe te voegen aan een acceptatielijst. U kunt ook privéconnectiviteit configureren.

Connectiviteitstest

Gebruik de volgende UDF om de connectiviteit tussen azure Databricks compute en uw databasesysteem te testen:

CREATE OR REPLACE TEMPORARY FUNCTION connectionTest(host string, port string) RETURNS string LANGUAGE PYTHON AS $$
import subprocess
try:
    command = ['nc', '-zv', host, str(port)]
    result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    return str(result.returncode) + "|" + result.stdout.decode() + result.stderr.decode()
except Exception as e:
    return str(e)
$$;

SELECT connectionTest('<database-host>', '<database-port>');

FAQ

De volgende veelgestelde vragen gaan over het gedrag van predicate pushdown voor JDBC-verbindingen.

Biedt JDBC ondersteuning voor predicaatpushdown?

Ja. Filters worden standaard naar de externe database gepusht voor zowel de Spark-gegevensbron-API (format('jdbc')) als de remote_query SQL-functie. Welke predicaten kunnen worden gepusht, hangt af van het JDBC-stuurprogramma en het dialect, dus voer EXPLAIN uit op uw query en inspecteer het fysieke plan om te bevestigen welke filters naar de bron worden gepusht. Voor de remote_query SQL-functie kunt u specifieke pushdowns (filters, limieten, offsets en aggregaties) beheren met opties zoals pushdown.filters.enabled; alle zijn standaard ingeschakeld.

Predicate pushdown verschilt van het beschikbaar stellen van tabelstatistieken aan de queryoptimizer. JDBC- en PySpark-gegevensbronnen maken geen statistieken beschikbaar voor de queryoptimalisatie om de volgorde van bewerkingen te helpen selecteren, ongeacht of predicaten naar beneden worden gepusht.