Databricks SQL Csatlakozás or for Python
A PythonHoz készült Databricks SQL Csatlakozás or egy Python-kódtár, amely lehetővé teszi, hogy Python-kód használatával SQL-parancsokat futtasson Azure Databricks-fürtökön és Databricks SQL-tárolókon. A Pythonhoz készült Databricks SQL Csatlakozás or egyszerűbben beállítható és használható, mint a hasonló Python-kódtárak, például a pyodbc. Ez a kódtár a PEP 249 – Python Database API Specification 2.0-s verziót követi.
Feljegyzés
A Pythonhoz készült Databricks SQL Csatlakozás or tartalmaz egy SQLAlchemy-dialektust is az Azure Databrickshez. Lásd: Az SQLAlchemy használata az Azure Databricksben.
Követelmények
- Python >=3.8 és <=3.11 rendszerű fejlesztőgép.
- A Databricks azt javasolja, hogy pythonos virtuális környezeteket használjon, például a Python részét képező venv által biztosítottakat. A virtuális környezetek segítségével biztosítható, hogy a Python és a Databricks SQL Csatlakozás or for Python megfelelő verzióit használja együtt. A virtuális környezetek beállítása és használata a jelen cikk hatókörén kívül esik. További információ: Virtuális környezetek létrehozása.
- Meglévő fürt vagy SQL Warehouse.
Első lépések
Telepítse a Databricks SQL Csatlakozás or for Python-kódtárat a fejlesztőgépre a futtatás vagy
python -m pip install databricks-sql-connector
a .pip install databricks-sql-connector
Gyűjtse össze a használni kívánt fürtre vagy SQL Warehouse-ra vonatkozó alábbi információkat:
Fürt
- A fürt kiszolgálói állomásneve. Ezt a fürt Speciális beállítások > JDBC/ODBC lapján található Kiszolgáló állomásnév értékéből szerezheti be.
- A fürt HTTP-elérési útja. Ezt a fürt Speciális beállítások > JDBC/ODBC lapján található HTTP-elérési út értékről szerezheti be.
Sql Warehouse
- Az SQL Warehouse kiszolgálói állomásneve. Ezt az SQL Warehouse Csatlakozás ion Details lapján található Kiszolgáló állomásnév értékéből szerezheti be.
- Az SQL Warehouse HTTP-elérési útja. Ezt az SQL Warehouse Csatlakozás ion Details lapján található HTTP-elérési út értékről szerezheti be.
Hitelesítés
A Pythonhoz készült Databricks SQL Csatlakozás or a következő Azure Databricks-hitelesítési típusokat támogatja:
- Databricks személyes hozzáférési jogkivonat hitelesítése
- Microsoft Entra ID (korábbi nevén Azure Active Directory) jogkivonat-hitelesítés
- OAuth gépről gépre (M2M) hitelesítés
- OAuth user-to-machine (U2M) hitelesítés
A Pythonhoz készült Databricks SQL Csatlakozás or még nem támogatja a következő Azure Databricks-hitelesítési típusokat:
- Felügyelt Azure-identitások hitelesítése
- Microsoft Entra ID alkalmazáspéldányos hitelesítés
- Azure CLI hitelesítés
Databricks személyes hozzáférési jogkivonat hitelesítése
Ha a Databricks SQL Csatlakozás or for Pythont azure Databricks személyes hozzáférési jogkivonat-hitelesítéssel szeretné használni, először létre kell hoznia egy Azure Databricks személyes hozzáférési jogkivonatot az alábbiak szerint:
- Az Azure Databricks-munkaterületen kattintson az Azure Databricks-felhasználónevére a felső sávon, majd válassza a Felhasználó Gépház lehetőséget a legördülő menüből.
- Kattintson a Fejlesztőeszközök elemre.
- Az Access-jogkivonatok mellett kattintson a Kezelés gombra.
- Kattintson az Új jogkivonat létrehozása elemre.
- (Nem kötelező) Írjon be egy megjegyzést, amely segít azonosítani a jogkivonatot a jövőben, és módosíthatja a jogkivonat alapértelmezett 90 napos élettartamát. Élettartam nélküli (nem ajánlott) jogkivonat létrehozásához hagyja üresen az Élettartam (nap) mezőt (üres).
- Kattintson a Létrehozás lehetőségre.
- Másolja a megjelenített jogkivonatot egy biztonságos helyre, majd kattintson a Kész gombra.
Feljegyzés
Ügyeljen arra, hogy a másolt jogkivonatot biztonságos helyre mentse. Ne ossza meg másokkal a másolt jogkivonatot. Ha elveszíti a másolt jogkivonatot, nem tudja pontosan ugyanazt a jogkivonatot újragenerálni. Ehelyett meg kell ismételnie ezt az eljárást egy új jogkivonat létrehozásához. Ha elveszíti a másolt jogkivonatot, vagy úgy véli, hogy a jogkivonat sérült, a Databricks határozottan javasolja, hogy azonnal törölje a jogkivonatot a munkaterületről az Access-jogkivonatok lapon a jogkivonat melletti kuka (Visszavonás) ikonra kattintva.
Ha nem tud jogkivonatokat létrehozni vagy használni a munkaterületen, ennek az lehet az oka, hogy a munkaterület rendszergazdája letiltotta a jogkivonatokat, vagy nem adott engedélyt a jogkivonatok létrehozására vagy használatára. Tekintse meg a munkaterület rendszergazdáját vagy a következőket:
A Databricks SQL Csatlakozás or pythonos hitelesítéséhez használja az alábbi kódrészletet. Ez a kódrészlet feltételezi, hogy a következő környezeti változókat állította be:
DATABRICKS_SERVER_HOSTNAME
elemet a fürt vagy az SQL Warehouse kiszolgálói állomásnév értékére állítja.DATABRICKS_HTTP_PATH
elemet, állítsa be a HTTP-elérési út értékét a fürthöz vagy az SQL Warehouse-hoz.DATABRICKS_TOKEN
beállításnál állítsa be az Azure Databricks személyes hozzáférési jogkivonatát.
A környezeti változók beállításához tekintse meg az operációs rendszer dokumentációját.
from databricks import sql
import os
with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN")) as connection:
# ...
OAuth machine-to-machine (M2M) hitelesítés
A Databricks SQL Csatlakozás or a Python 2.7.0-s és újabb verziói támogatják az OAuth machine-to-machine (M2M) hitelesítést. A Python 0.18.0-s vagy újabb verziójához készült Databricks SDK-t is telepítenie kell (például futtatással vagy python -m pip install databricks-sdk
).pip install databricks-sdk
A Databricks SQL Csatlakozás or for Python OAuth M2M-hitelesítéssel való használatához a következőket kell tennie:
Hozzon létre egy Azure Databricks-szolgáltatásnevet az Azure Databricks-munkaterületen, és hozzon létre egy OAuth-titkos kulcsot a szolgáltatásnévhez.
A szolgáltatásnév és az OAuth-titkos kód létrehozásához lásd : OAuth machine-to-machine (M2M) hitelesítés. Jegyezze fel a szolgáltatásnév UUID - vagy alkalmazásazonosító-értékét , valamint a szolgáltatásnév OAuth-titkos kódjának titkos értékét.
Adjon hozzáférést a szolgáltatásnévnek a fürthöz vagy a raktárhoz.
Ha hozzáférést szeretne adni a szolgáltatásnévnek a fürthöz vagy a raktárhoz, olvassa el a számítási engedélyeket vagy az SQL-raktár kezelését.
A Databricks SQL Csatlakozás or pythonos hitelesítéséhez használja az alábbi kódrészletet. Ez a kódrészlet feltételezi, hogy a következő környezeti változókat állította be:
DATABRICKS_SERVER_HOSTNAME
elemet a fürt vagy az SQL Warehouse kiszolgálói állomásnév értékére állítja.DATABRICKS_HTTP_PATH
elemet, állítsa be a HTTP-elérési út értékét a fürthöz vagy az SQL Warehouse-hoz.DATABRICKS_CLIENT_ID
, állítsa be a szolgáltatásnév UUID - vagy alkalmazásazonosító-értékét .DATABRICKS_CLIENT_SECRET
, állítsa be a szolgáltatásnév OAuth-titkos kódjának titkos értékét.
A környezeti változók beállításához tekintse meg az operációs rendszer dokumentációját.
from databricks.sdk.core import Config, oauth_service_principal
from databricks import sql
import os
server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME")
def credential_provider():
config = Config(
host = f"https://{server_hostname}",
client_id = os.getenv("DATABRICKS_CLIENT_ID"),
client_secret = os.getenv("DATABRICKS_CLIENT_SECRET"))
return oauth_service_principal(config)
with sql.connect(server_hostname = server_hostname,
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
credentials_provider = credential_provider) as connection:
# ...
Microsoft Entra ID (korábbi nevén Azure Active Directory) jogkivonat-hitelesítés
Ha a Databricks SQL Csatlakozás or for Pythont Microsoft Entra ID (korábbi nevén Azure Active Directory) jogkivonat-hitelesítéssel szeretné használni, meg kell adnia a Databricks SQL Csatlakozás or for Pythont a Microsoft Entra ID-jogkivonattal. Microsoft Entra ID hozzáférési jogkivonat létrehozásához tegye a következőket:
- Azure Databricks-felhasználó esetén használhatja az Azure CLI-t. Lásd: Microsoft Entra-azonosítók (korábbi nevén Azure Active Directory-) jogkivonatok lekérése a felhasználók számára az Azure CLI használatával.
- A Microsoft Entra ID szolgáltatásnévvel kapcsolatban lásd : Microsoft Entra ID hozzáférési jogkivonat beszerzése az Azure CLI-vel. A Microsoft Entra ID által felügyelt szolgáltatásnév létrehozásához lásd: Szolgáltatásnevek kezelése.
A Microsoft Entra ID-jogkivonatok alapértelmezett élettartama körülbelül 1 óra. Új Microsoft Entra ID-jogkivonat létrehozásához ismételje meg ezt a folyamatot.
A Databricks SQL Csatlakozás or pythonos hitelesítéséhez használja az alábbi kódrészletet. Ez a kódrészlet feltételezi, hogy a következő környezeti változókat állította be:
- Állítsa be
DATABRICKS_SERVER_HOSTNAME
a fürt vagy az SQL Warehouse kiszolgálói állomásnév értékét. - Állítsa be
DATABRICKS_HTTP_PATH
a fürt vagy az SQL Warehouse HTTP-elérési útvonalának értékét. - Állítsa be
DATABRICKS_TOKEN
a Microsoft Entra ID tokent.
A környezeti változók beállításához tekintse meg az operációs rendszer dokumentációját.
from databricks import sql
import os
with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN")) as connection:
# ...
OAuth user-to-machine (U2M) hitelesítés
A Databricks SQL Csatlakozás or a Python 2.7.0-s és újabb verziói támogatják az OAuth felhasználó–gép (U2M) hitelesítést. A Python 0.19.0-s vagy újabb verziójához készült Databricks SDK-t is telepítenie kell (például futtatással vagy python -m pip install databricks-sdk
).pip install databricks-sdk
A Databricks SQL Csatlakozás or for Python OAuth U2M-hitelesítéssel való hitelesítéséhez használja az alábbi kódrészletet. Az OAuth U2M-hitelesítés valós idejű emberi bejelentkezést és hozzájárulást használ a cél Azure Databricks-felhasználói fiók hitelesítéséhez. Ez a kódrészlet feltételezi, hogy a következő környezeti változókat állította be:
- Állítsa be
DATABRICKS_SERVER_HOSTNAME
a fürt vagy az SQL Warehouse kiszolgálói állomásnév értékét. - Állítsa be
DATABRICKS_HTTP_PATH
a fürt vagy az SQL Warehouse HTTP-elérési útvonalának értékét.
A környezeti változók beállításához tekintse meg az operációs rendszer dokumentációját.
from databricks import sql
import os
with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
auth_type = "databricks-oauth") as connection:
# ...
Példák
Az alábbi példakód bemutatja, hogyan használható a Python Databricks SQL Csatlakozás or az adatok lekérdezésére és beszúrására, a metaadatok lekérdezésére, a kurzorok és kapcsolatok kezelésére, valamint a naplózás konfigurálására.
Feljegyzés
Az alábbi példakód bemutatja, hogyan használható az Azure Databricks személyes hozzáférési jogkivonata a hitelesítéshez. Ha ehelyett más elérhető Azure Databricks-hitelesítési típusokat szeretne használni, tekintse meg a Hitelesítés című témakört.
Ezek a példakódok lekérik a környezeti http_path
változókserver_hostname
, valamint access_token
a kapcsolati változók értékeit:
DATABRICKS_SERVER_HOSTNAME
, amely a kiszolgáló állomásnevének értékét jelöli a követelményekből.DATABRICKS_HTTP_PATH
, amely a követelmények HTTP-elérési útját jelöli.DATABRICKS_TOKEN
, amely a hozzáférési jogkivonatot jelöli a követelményekből.
Ezeket a kapcsolatváltozó-értékeket más módszerekkel is beolvashatja. A környezeti változók használata csak egy megközelítés a sok közül.
- Adatok lekérdezése
- Adatok beszúrása
- Metaadatok lekérdezése
- Kurzorok és kapcsolatok kezelése
- Naplózás konfigurálása
Adatok lekérdezése
Az alábbi példakód bemutatja, hogyan hívhatja meg a Python Databricks SQL Csatlakozás ort egy alapszintű SQL-parancs fürtben vagy SQL-raktárban való futtatásához. Ez a parancs a katalógus sémájában lévő samples
táblázat első két sorát trips
nyctaxi
adja vissza.
from databricks import sql
import os
with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN")) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM samples.nyctaxi.trips LIMIT 2")
result = cursor.fetchall()
for row in result:
print(row)
Adat beszúrása
Az alábbi példa bemutatja, hogyan szúrhat be kis mennyiségű adatot (több ezer sort):
from databricks import sql
import os
with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN")) as connection:
with connection.cursor() as cursor:
cursor.execute("CREATE TABLE IF NOT EXISTS squares (x int, x_squared int)")
squares = [(i, i * i) for i in range(100)]
values = ",".join([f"({x}, {y})" for (x, y) in squares])
cursor.execute(f"INSERT INTO squares VALUES {values}")
cursor.execute("SELECT * FROM squares LIMIT 10")
result = cursor.fetchall()
for row in result:
print(row)
Nagy mennyiségű adat esetén először fel kell töltenie az adatokat a felhőbeli tárolóba, majd végre kell hajtania a COPY INTO parancsot.
Metaadatok lekérdezése
Vannak dedikált metódusok a metaadatok lekérésére. Az alábbi példa egy mintatábla oszlopainak metaadatait kéri le:
from databricks import sql
import os
with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN")) as connection:
with connection.cursor() as cursor:
cursor.columns(schema_name="default", table_name="squares")
print(cursor.fetchall())
Kurzorok és kapcsolatok kezelése
Ajánlott bezárni a már nem használt kapcsolatokat és kurzorokat. Ez erőforrásokat szabadít fel az Azure Databricks-fürtökön és a Databricks SQL-tárolókon.
Az erőforrások kezeléséhez használhat környezetkezelőt (az with
előző példákban használt szintaxist), vagy explicit módon meghívhatja a következőt close
:
from databricks import sql
import os
connection = sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN"))
cursor = connection.cursor()
cursor.execute("SELECT * from range(10)")
print(cursor.fetchall())
cursor.close()
connection.close()
Naplózás konfigurálása
A Databricks SQL Csatlakozás or a Python szabványos naplózási modulját használja. A naplózási szintet az alábbiakhoz hasonlóan konfigurálhatja:
from databricks import sql
import os, logging
logging.getLogger("databricks.sql").setLevel(logging.DEBUG)
logging.basicConfig(filename = "results.log",
level = logging.DEBUG)
connection = sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"),
http_path = os.getenv("DATABRICKS_HTTP_PATH"),
access_token = os.getenv("DATABRICKS_TOKEN"))
cursor = connection.cursor()
cursor.execute("SELECT * from range(10)")
result = cursor.fetchall()
for row in result:
logging.debug(row)
cursor.close()
connection.close()
API-referencia
Csomag
databricks-sql-connector
Használat: pip install databricks-sql-connector
Lásd még a Databricks-sql-connectort a Python-csomagindexben (PyPI).
Modul
databricks.sql
Használat: from databricks import sql
Metódusok
connect
Módszer
Kapcsolatot hoz létre egy adatbázissal.
Egy Csatlakozás ion objektumot ad vissza.
Paraméterek |
---|
server_hostname Típus: str A fürt vagy az SQL Warehouse kiszolgálói állomásneve. A kiszolgáló állomásnevének lekéréséhez tekintse meg a cikk korábbi utasításait. Ez a paraméter kötelező. Példa: adb-1234567890123456.7.azuredatabricks.net |
http_path Típus: str A fürt vagy az SQL Warehouse HTTP-elérési útja. A HTTP-elérési út lekéréséhez tekintse meg a cikk korábbi utasításait. Ez a paraméter kötelező. Példa: sql/protocolv1/o/1234567890123456/1234-567890-test123 fürt esetében./sql/1.0/warehouses/a1b234c567d8e9fa SQL-raktárhoz. |
access_token, auth_type Típus: str Információk az Azure Databricks hitelesítési beállításairól. További részletekért lásd: Hitelesítés. |
session_configuration Típus: dict[str, Any] A Spark-munkamenet konfigurációs paramétereinek szótára. A konfiguráció beállítása egyenértékű az SET key=val SQL-parancs használatával. Futtassa az SQL-parancsot SET -v az elérhető konfigurációk teljes listájának lekéréséhez.Alapértelmezett érték: None .Ez a paraméter nem kötelező. Példa: {"spark.sql.variable.substitute": True} |
http_headers Típus: List[Tuple[str, str]]] További (kulcs, érték) párok, hogy beállítsa a HTTP-fejlécek minden RPC-kérést az ügyfél által. A tipikus használat nem állít be további HTTP-fejléceket. Alapértelmezett érték: None .Ez a paraméter nem kötelező. A 2.0-s verzió óta |
Katalógus Típus: str A kapcsolathoz használni kívánt kezdeti katalógus. Alapértelmezés szerint None (ebben az esetben általában az alapértelmezett katalógus hive_metastore lesz használva).Ez a paraméter nem kötelező. A 2.0-s verzió óta |
Séma Típus: str A kapcsolathoz használandó kezdeti séma. Alapértelmezett érték None (ebben az esetben az alapértelmezett séma default lesz használva).Ez a paraméter nem kötelező. A 2.0-s verzió óta |
use_cloud_fetch Típus: bool True lekéréses kérések közvetlenül a felhőobjektum-tárolóba való elküldéséhez adattömbök letöltéséhez. False (alapértelmezett) a lekéréses kérelmek közvetlenül az Azure Databricksnek való elküldéséhez.Ha use_cloud_fetch be van állítva, True de a hálózati hozzáférés le van tiltva, akkor a beolvasási kérelmek sikertelenek lesznek.A 2.8-as verzió óta |
Osztályok
Connection
Osztály
Adatbázis-kapcsolatot jelöl.
Metódusok
close
Módszer
Bezárja az adatbázishoz való kapcsolatot, és felszabadítja az összes társított erőforrást a kiszolgálón. A kapcsolatra irányuló további hívások a következőt Error
fogják eredményezni: .
Nincsenek paraméterek.
Nincs visszatérési érték.
cursor
Módszer
Olyan mechanizmust ad vissza, amely lehetővé teszi az adatbázis rekordjainak bejárását.
Nincsenek paraméterek.
Egy kurzorobjektumot ad vissza.
Cursor
Osztály
Attribútumok
arraysize
attribútum
A fetchmany metódussal használva megadja a belső pufferméretet, amely azt is jelzi, hogy egyszerre hány sort kell ténylegesen lekérni a kiszolgálóról. Az alapértelmezett érték 10000
. Szűk eredmények (olyan eredmények, amelyekben az egyes sorok nem tartalmaznak sok adatot), a jobb teljesítmény érdekében növelnie kell ezt az értéket.
Olvasási-írási hozzáférés.
description
attribútum
Objektumokat tartalmazó Pythont list
tuple
tartalmaz. Mindegyik tuple
objektum 7 értéket tartalmaz, és mindegyik tuple
objektum első 2 eleme az egyetlen eredményoszlopot leíró információkat tartalmazza az alábbiak szerint:
name
: Az oszlop neve.type_code
: Az oszlop típusát képviselő sztring. Egy egész szám oszlop például a következő típusú kóddal rendelkezikint
: .
A 7 elemből tuple
álló objektumok fennmaradó 5 eleme nincs implementálva, és az értékek nincsenek definiálva. Ezeket általában 4 None
értékként, majd egyetlen True
értékként adja vissza.
Írásvédett hozzáférés.
Metódusok
cancel
Módszer
Megszakítja a kurzor által indított adatbázis-lekérdezések vagy parancsok futtatását. A társított erőforrások kiszolgálón való felszabadításához a metódus meghívása után hívja meg a szoros metódust cancel
.
Nincsenek paraméterek.
Nincs visszatérési érték.
close
Módszer
Bezárja a kurzort, és felszabadítja a társított erőforrásokat a kiszolgálón. Egy már bezárt kurzor bezárása hibát jelezhet.
Nincsenek paraméterek.
Nincs visszatérési érték.
execute
Módszer
Előkészít és futtat egy adatbázis-lekérdezést vagy -parancsot.
Nincs visszatérési érték.
Paraméterek |
---|
Művelet Típus: str A előkészítendő és futtatandó lekérdezés vagy parancs. Ez a paraméter kötelező. Példa paraméter parameters nélkül:cursor.execute( 'SELECT * FROM samples.nyctaxi.trips WHERE pickup_zip="10019" LIMIT 2' ) Példa a paraméterrel parameters :cursor.execute( 'SELECT * FROM samples.nyctaxi.trips WHERE zip=%(pickup_zip)s LIMIT 2', { 'pickup_zip': '10019' } ) |
paraméterek Típus: szótár A paraméterrel használandó paraméterek sorozata operation .Ez a paraméter nem kötelező. Az alapértelmezett érték None . |
executemany
Módszer
Előkészít és futtat egy adatbázis-lekérdezést vagy parancsot az seq_of_parameters
argumentum összes paraméterütemezésével. A rendszer csak a végső eredményhalmazt őrzi meg.
Nincs visszatérési érték.
Paraméterek |
---|
Művelet Típus: str A előkészítendő és futtatandó lekérdezés vagy parancs. Ez a paraméter kötelező. |
seq_of_parameters Típus: list dict Számos paraméterérték-készlet sorozata, amelyet a operation Paraméter.Ez a paraméter kötelező. |
catalogs
Módszer
Metaadat-lekérdezés végrehajtása a katalógusokról. A tényleges eredményeket ezután le kell kérni a következővel fetchmany
: vagy fetchall
.
Az eredményhalmaz fontos mezői a következők:
- Mező neve:
TABLE_CAT
. Típus:str
. A katalógus neve.
Nincsenek paraméterek.
Nincs visszatérési érték.
Az 1.0-s verzió óta
schemas
Módszer
Metaadat-lekérdezés végrehajtása a sémákról. A tényleges eredményeket ezután le kell kérni a következővel fetchmany
: vagy fetchall
.
Az eredményhalmaz fontos mezői a következők:
- Mező neve:
TABLE_SCHEM
. Típus:str
. A séma neve. - Mező neve:
TABLE_CATALOG
. Típus:str
. A katalógus, amelyhez a séma tartozik.
Nincs visszatérési érték.
Az 1.0-s verzió óta
Paraméterek |
---|
catalog_name Típus: str Katalógusnév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
schema_name Típus: str Sémanév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
tables
Módszer
Metaadat-lekérdezés végrehajtása táblákról és nézetekről. A tényleges eredményeket ezután le kell kérni a következővel fetchmany
: vagy fetchall
.
Az eredményhalmaz fontos mezői a következők:
- Mező neve:
TABLE_CAT
. Típus:str
. A katalógus, amelyhez a tábla tartozik. - Mező neve:
TABLE_SCHEM
. Típus:str
. Az a séma, amelyhez a tábla tartozik. - Mező neve:
TABLE_NAME
. Típus:str
. A tábla neve. - Mező neve:
TABLE_TYPE
. Típus:str
. A reláció típusa, példáulVIEW
vagyTABLE
(a Databricks Runtime 10.4 LTS és újabb verziókra, valamint a Databricks SQL-re vonatkozik; a Databricks Runtime korábbi verziói üres sztringet adnak vissza).
Nincs visszatérési érték.
Az 1.0-s verzió óta
Paraméterek |
---|
catalog_name Típus: str Katalógusnév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
schema_name Típus: str Sémanév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
table_name Típus: str Egy táblanév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
table_types Típus: List[str] Az egyező táblázattípusok listája, például TABLE .VIEW Ez a paraméter nem kötelező. |
columns
Módszer
Metaadat-lekérdezés végrehajtása az oszlopokról. A tényleges eredményeket ezután le kell kérni a következővel fetchmany
: vagy fetchall
.
Az eredményhalmaz fontos mezői a következők:
- Mező neve:
TABLE_CAT
. Típus:str
. Az a katalógus, amelyhez az oszlop tartozik. - Mező neve:
TABLE_SCHEM
. Típus:str
. Az a séma, amelyhez az oszlop tartozik. - Mező neve:
TABLE_NAME
. Típus:str
. Annak a táblának a neve, amelyhez az oszlop tartozik. - Mező neve:
COLUMN_NAME
. Típus:str
. Az oszlop neve.
Nincs visszatérési érték.
Az 1.0-s verzió óta
Paraméterek |
---|
catalog_name Típus: str Katalógusnév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
schema_name Típus: str Sémanév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
table_name Típus: str Egy táblanév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
column_name Típus: str Egy oszlopnév, amelyről információt szeretne lekérni. A % karaktert helyettesítő karakterként értelmezi a rendszer.Ez a paraméter nem kötelező. |
fetchall
Módszer
Lekéri egy lekérdezés összes (vagy az összes fennmaradó) sorát.
Nincsenek paraméterek.
A lekérdezés összes (vagy az összes fennmaradó) sorát az objektumok Pythonjaként list
Row
adja vissza.
Error
Ha a végrehajtási metódus előző hívása nem ad vissza adatokat, vagy még nem execute
történt hívás.
fetchmany
Módszer
Lekéri a lekérdezés következő sorait.
A lekérdezés következő sorainak legfeljebb size
(vagy ha size
nincs megadva tömbméret attribútum) értékét adja vissza objektum Python-objektumként list
Row
.
Ha a beolvasandó soroknál size
kevesebb sor van hátra, a rendszer az összes többi sort visszaadja.
Error
Ha a végrehajtási metódus előző hívása nem ad vissza adatokat, vagy még nem execute
történt hívás.
Paraméterek |
---|
Méret Típus: int A következő lekérendő sorok száma. Ez a paraméter nem kötelező. Ha nincs megadva, a rendszer az arraysize attribútum értékét használja.Példa: cursor.fetchmany(10) |
fetchone
Módszer
Lekéri az adathalmaz következő sorát.
Nincsenek paraméterek.
Az adathalmaz következő sorát adja vissza egyetlen sorozatként Python-objektumként tuple
, vagy visszaadja None
, ha nincs több elérhető adat.
Error
Ha a végrehajtási metódus előző hívása nem ad vissza adatokat, vagy még nem execute
történt hívás.
fetchall_arrow
Módszer
PyArrow-objektumként Table
lekéri egy lekérdezés összes (vagy az összes fennmaradó) sorát.
A nagyon nagy mennyiségű adatot visszaadó lekérdezéseket inkább a memóriahasználat csökkentésére kell használni fetchmany_arrow
.
Nincsenek paraméterek.
A lekérdezés összes (vagy az összes fennmaradó) sorát PyArrow-táblaként adja vissza.
Error
Ha a végrehajtási metódus előző hívása nem ad vissza adatokat, vagy még nem execute
történt hívás.
A 2.0-s verzió óta
fetchmany_arrow
Módszer
Lekéri a lekérdezés következő sorait PyArrow-objektumként Table
.
size
A lekérdezés következő sorainak argumentumát (vagy ha size
nincs megadva a tömbméret attribútumot) adja vissza Python PyArrow-objektumkéntTable
.
Error
Ha a végrehajtási metódus előző hívása nem ad vissza adatokat, vagy még nem execute
történt hívás.
A 2.0-s verzió óta
Paraméterek |
---|
Méret Típus: int A következő lekérendő sorok száma. Ez a paraméter nem kötelező. Ha nincs megadva, a rendszer az arraysize attribútum értékét használja.Példa: cursor.fetchmany_arrow(10) |
Row
Osztály
A sorosztály egy rekordszerű adatstruktúra, amely egy egyéni eredménysort jelöl.
Ha a sor tartalmaz egy oszlopot a névvel "my_column"
, akkor a "my_column"
mező row
a következőn keresztül row.my_column
érhető el: Numerikus indexekkel is elérheti például row[0]
a mezőket.
Ha az oszlopnév nem engedélyezett attribútummetódus-névként (például egy számjegygel kezdődik), akkor a mezőt a következőképpen row["1_my_column"]
érheti el.
Az 1.0-s verzió óta
Metódusok
asDict
Módszer
A sor szótári ábrázolását adja vissza, amelyet mezőnevek indexelnek. Ha ismétlődő mezőnevek vannak, az ismétlődő mezők egyike (de csak egy) lesz visszaadva a szótárban. A visszaadott duplikált mező nincs meghatározva.
Nincsenek paraméterek.
Mezőket dict
ad vissza.
Típuskonverziók
Az alábbi táblázat az Apache Spark SQL-adattípusokat a Python-adattípus megfelelőire képezi le.
Apache Spark SQL-adattípus | Python-adattípus |
---|---|
array |
numpy.ndarray |
bigint |
int |
binary |
bytearray |
boolean |
bool |
date |
datetime.date |
decimal |
decimal.Decimal |
double |
float |
int |
int |
map |
str |
null |
NoneType |
smallint |
int |
string |
str |
struct |
str |
timestamp |
datetime.datetime |
tinyint |
int |
Hibaelhárítás
tokenAuthWrapperInvalidAccessToken: Invalid access token
Üzenetet
Probléma: A kód futtatásakor a következőhöz hasonló üzenet jelenik meg Error during request to server: tokenAuthWrapperInvalidAccessToken: Invalid access token
.
Lehetséges ok: Az átadott access_token
érték nem érvényes Azure Databricks személyes hozzáférési jogkivonat.
Javasolt javítás: Ellenőrizze, hogy az átadott access_token
érték helyes-e, majd próbálkozzon újra.
gaierror(8, 'nodename nor servname provided, or not known')
Üzenetet
Probléma: A kód futtatásakor a következőhöz hasonló üzenet jelenik meg Error during request to server: gaierror(8, 'nodename nor servname provided, or not known')
.
Lehetséges ok: Az átadott server_hostname
érték nem a megfelelő állomásnév.
Javasolt javítás: Ellenőrizze, hogy az átadott server_hostname
érték helyes-e, majd próbálkozzon újra.
A kiszolgáló állomásnevének megkereséséről további információt az Azure Databricks számítási erőforrás kapcsolati adatainak lekérése című témakörben talál.
IpAclError
Üzenetet
Probléma: A kód futtatásakor megjelenik az üzenet Error during request to server: IpAclValidation
, amikor egy Azure Databricks-jegyzetfüzetben próbálja használni az összekötőt.
Lehetséges ok: Lehetséges, hogy engedélyezve van az IP-engedélyezési lista az Azure Databricks-munkaterületen. Az IP-cím engedélyezésével a Spark-fürtök és a vezérlősík közötti kapcsolatok alapértelmezés szerint nem engedélyezettek.
Javasolt javítás: Kérje meg a rendszergazdát, hogy adja hozzá a számításisík-alhálózatot az IP-engedélyezési listához.
További erőforrások
További információkért lásd:
- A Databricks SQL Csatlakozás or for Python-adattár a GitHubon
- Adattípusok
- Beépített típusok (a
bool
Python webhelyén ,bytearray
,float
ésint
str
) - datetime (for
datetime.date
ésdatatime.datetime
) a Python webhelyén - decimális (for
decimal.Decimal
) a Python webhelyén - Beépített konstansok (a
NoneType
Python webhelyén)