Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Spark-tehtävien määrittely (SJD) on eräänlainen Fabric-esine, jonka avulla käyttäjät voivat määritellä ja ajaa Apache Spark -tehtäviä Fabric-järjestelmässä. Spark-työmäärittelyrajapinta v2 antaa käyttäjille mahdollisuuden luoda ja päivittää Spark-työmäärittelykohteita uudella muodolla nimeltä SparkJobDefinitionV2. V2-muodon ensisijainen etu on, että se mahdollistaa pääsuoritettavan tiedoston ja muiden kirjastotiedostojen hallinnan yhdellä API-kutsulla; tiedostojen erilliseen lataamiseen ei tarvita enää tallennustunnusta tiedostojen hallintaan.
Edellytykset
- Microsoft Entra -token vaaditaan Fabric REST API:n käyttämiseen. MSAL (Microsoft Authentication Library) -kirjastoa suositellaan tokenin saamiseksi. Lisätietoja löytyy osoitteesta Authentication flow -tuki MSAL:ssa.
Fabric REST API määrittelee yhtenäisen päätepisteen Fabric-kohteiden CRUD-toiminnoille. Päätepiste on https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items.
Spark-työn määrittely v2-formaatin yleiskatsaus
Spark-työn määrittelykohteen hallintakuormassa kenttää definition käytetään määrittämään Spark-työn määrittelykohteen yksityiskohtainen asetus. Kenttä definition sisältää kaksi alikenttää: format ja parts. Kenttä format määrittää Spark-työn määrittelykohteen muodon, joka tulisi SparkJobDefinitionV2 olla v2-formaatille.
Kenttä parts on taulukko, joka sisältää Spark-työn määrittelykohteen yksityiskohtaisen asetelman. Jokainen taulukko parts edustaa osaa yksityiskohtaisesta kokoonpanosta. Jokaisessa osassa on kolme alakenttää: path, payload, ja payloadType. Kenttä path määrittää osan polun, kenttä payload määrittää osan sisällön, joka on koodattu base64:ään, ja kenttä payloadType määrittää hyötykuorman tyypin, joka tulisi olla InlineBase64.
Tärkeää
Tämä v2-muoto tukee vain Spark-työmäärittelyjä tiedostomuodoilla .py tai .scala. .jar tiedostomuotoa ei tueta.
Luo Spark-työn määrittelykohde päämäärittelutiedostolla ja muilla lib-tiedostoilla
Seuraavassa esimerkissä luomme Spark-työn määrittelykohteen, joka:
- Nimi on
SJDHelloWorld. - Päämäärittelytiedosto on
main.py, joka lukee CSV-tiedoston oletusjärvitalosta ja tallentaa sen Delta-tauluksi takaisin samaan järvenrakennukseen. - Toinen lib-tiedosto on
libs.py, jossa on aputoiminto, jolla palautetaan CSV-tiedoston nimi ja Delta-taulukko. - Oletusjärvitalo on asetettu tietylle järvitalo-esine-ID:lle.
Seuraavassa on yksityiskohtainen hyötykuorma Spark-työn määrittelykohteen luomiseksi.
{
"displayName": "SJDHelloWorld",
"type": "SparkJobDefinition",
"definition": {
"format": "SparkJobDefinitionV2",
"parts": [
{
"path": "SparkJobDefinitionV1.json",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Main/main.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Libs/lib1.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
}
]
}
}
Yksityiskohtaisen kokoonpanon purkamiseen tai koodaamiseen voit käyttää seuraavia aputoimintoja Pythonissa. On myös muita verkkotyökaluja https://www.base64decode.org/ , jotka voivat hoitaa saman tehtävän.
import base64
def json_to_base64(json_data):
# Serialize the JSON data to a string
json_string = json.dumps(json_data)
# Encode the JSON string as bytes
json_bytes = json_string.encode('utf-8')
# Encode the bytes as Base64
base64_encoded = base64.b64encode(json_bytes).decode('utf-8')
return base64_encoded
def base64_to_json(base64_data):
# Decode the Base64-encoded string to bytes
base64_bytes = base64_data.encode('utf-8')
# Decode the bytes to a JSON string
json_string = base64.b64decode(base64_bytes).decode('utf-8')
# Deserialize the JSON string to a Python dictionary
json_data = json.loads(json_string)
return json_data
HTTP-koodin 202 vastaus kertoo, että Spark-työn määrittely on onnistuneesti luotu.
Hanki Spark-työn määrittely määrittelyosin kanssa v2-muodossa
Uudessa v2-formaatissa, kun saat Spark-työn määrittelykohteen, jossa on määrittelyosia, päämäärittelytiedoston ja muiden lib-tiedostojen tiedostosisältö sisältyy vastauskuormaan, base64 on koodattu kentän parts alle. Tässä on esimerkki Spark-työn määrittelykohteen saamisesta määritelmien osilla:
- Ensiksi tee POST-pyyntö päätepisteelle
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{sjditemid}/getDefinitionParts?format=SparkJobDefinitionV2. Varmista, että muotokyselyparametrin arvo onSparkJobDefinitionV2. - Sitten vastausotsikoista tarkista HTTP-tilakoodi. HTTP-koodi 202 osoittaa, että pyyntö hyväksyttiin onnistuneesti. Kopioi arvo
x-ms-operation-idvastauksen otsikoista. - Lopuksi tee GET-pyyntö päätepisteelle
https://api.fabric.microsoft.com/v1/operations/{operationId}kopioidullax-ms-operation-idarvolla saadaksesi operaation tuloksen. Vastauskuormassadefinitionkenttä sisältää yksityiskohtaisen Spark-työn määrittelykohteen asetuksen, mukaan lukien päämäärittelytiedoston ja muut kentänpartsalla olevat lib-tiedostot.
Päivitä Spark-työn määrittelykohde päämäärittelytiedostolla ja muilla lib-tiedostoilla v2-muodossa
Jos haluat päivittää olemassa olevan Spark-työn määrittelykohteen päämäärittelytiedostolla ja muilla lib-tiedostoilla v2-muodossa, voit käyttää vastaavaa hyötykuormarakennetta kuin create-operaatiossa. Tässä on esimerkki edellisessä osiossa luodun Spark-tehtävämäärittelyn päivittämisestä:
{
"displayName": "SJDHelloWorld",
"type": "SparkJobDefinition",
"definition": {
"format": "SparkJobDefinitionV2",
"parts": [
{
"path": "SparkJobDefinitionV1.json",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Main/main.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Libs/lib2.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
}
]
}
}
Yllä mainitulla kuormalla tiedostoihin tehdään seuraavat muutokset:
- main.py-tiedosto päivitetään uudella sisällöllä.
- lib1.py poistetaan tästä Spark-tehtävämäärittelykohteesta ja poistetaan myös OneLake-tallennuksesta.
- Uusi lib2.py-tiedosto lisätään tähän Spark-työn määrittelykohteeseen ja ladataan OneLake-tallennustilaan.
Päivittääksesi Spark-työn määrittelykohteen, tee POST-pyyntö päätepisteelle https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{sjditemid} , jossa on yllä oleva hyötykuorma. HTTP-koodin 202 vastaus kertoo, että Spark-tehtävämäärittely on päivitetty onnistuneesti.