Introduzione ad Azure Data Lake Analytics con API RESTGet started with Azure Data Lake Analytics using REST APIs

Informazioni sull'uso delle API REST WebHDFS e delle API REST di Data Lake Analytics per gestire gli account, i processi e il catalogo di Data Lake Analytics.Learn how to use WebHDFS REST APIs and Data Lake Analytics REST APIs to manage Data Lake Analytics accounts, jobs, and catalog.

PrerequisitiPrerequisites

  • Una sottoscrizione di Azure.An Azure subscription. Vedere Ottenere una versione di valutazione gratuita di Azure.See Get Azure free trial.
  • Creare un'applicazione di Azure Active Directory.Create an Azure Active Directory Application. Usare l'applicazione Azure AD per autenticare l'applicazione Data Lake Analytics con Azure AD.You use the Azure AD application to authenticate the Data Lake Analytics application with Azure AD. Per l'autenticazione con Azure AD è possibile usare l'autenticazione dell'utente finale o l'autenticazione da servizio a servizio.There are different approaches to authenticate with Azure AD, which are end-user authentication or service-to-service authentication. Per altre informazioni e istruzioni su come eseguire l'autenticazione, vedere Eseguire l'autenticazione con Data Lake Analytics usando Azure Active Directory.For instructions and more information on how to authenticate, see Authenticate with Data Lake Analytics using Azure Active Directory.
  • cURL.cURL. Questo articolo usa cURL per illustrare come eseguire chiamate API REST su un account Data Lake Analytics.This article uses cURL to demonstrate how to make REST API calls against a Data Lake Analytics account.

Eseguire l'autenticazione con Azure Active DirectoryAuthenticate with Azure Active Directory

Per l'autenticazione con Azure Active Directory è possibile procedere in due modi.There are two methods for authenticating with Azure Active Directory.

Autenticazione dell'utente finale (interattiva)End-user authentication (interactive)

Con questo metodo, l'applicazione richiede all'utente di accedere e tutte le operazioni vengono eseguite nel contesto utente.Using this method, application prompts the user to log in and all the operations are performed in the context of the user.

Eseguire questa procedura per l'autenticazione interattiva:Follow these steps for interactive authentication:

  1. Tramite l'applicazione, reindirizzare l'utente all'URL seguente:Through your application, redirect the user to the following URL:

     https://login.microsoftonline.com/<TENANT-ID>/oauth2/authorize?client_id=<CLIENT-ID>&response_type=code&redirect_uri=<REDIRECT-URI>
    

    Nota

    <REDIRECT-URI> deve essere codificato per essere usato in un URL.<REDIRECT-URI> needs to be encoded for use in a URL. Per https://localhost, usare quindi https%3A%2F%2FlocalhostSo, for https://localhost, use https%3A%2F%2Flocalhost)

    Per questa esercitazione, è possibile sostituire i valori segnaposto nell'URL precedente e incollare quest'ultimo nella barra degli indirizzi di un web browser.For the purpose of this tutorial, you can replace the placeholder values in the URL above and paste it in a web browser's address bar. Si verrà reindirizzati per l'autenticazione tramite l'accesso ad Azure.You will be redirected to authenticate using your Azure login. Dopo aver eseguito correttamente l'accesso, la risposta verrà visualizzata nella barra degli indirizzi del browser.Once you succesfully log in, the response is displayed in the browser's address bar. La risposta sarà nel formato seguente:The response will be in the following format:

     http://localhost/?code=<AUTHORIZATION-CODE>&session_state=<GUID>
    
  2. Acquisire il codice di autorizzazione dalla risposta.Capture the authorization code from the response. Per questa esercitazione, è possibile copiare il codice di autorizzazione dalla barra degli indirizzi del web browser e passarla nella richiesta POST all'endpoint di token come illustrato di seguito:For this tutorial, you can copy the authorization code from the address bar of the web browser and pass it in the POST request to the token endpoint, as shown below:

     curl -X POST https://login.microsoftonline.com/<TENANT-ID>/oauth2/token \
     -F redirect_uri=<REDIRECT-URI> \
     -F grant_type=authorization_code \
     -F resource=https://management.core.windows.net/ \
     -F client_id=<CLIENT-ID> \
     -F code=<AUTHORIZATION-CODE>
    

    Nota

    In questo caso non è necessario codificare <REDIRECT-URI>.In this case, the <REDIRECT-URI> need not be encoded.

  3. La risposta è un oggetto JSON che contiene un token di accesso (ad esempio, "access_token": "<ACCESS_TOKEN>") e un token di aggiornamento (ad esempio, "refresh_token": "<REFRESH_TOKEN>").The response is a JSON object that contains an access token (e.g., "access_token": "<ACCESS_TOKEN>") and a refresh token (e.g., "refresh_token": "<REFRESH_TOKEN>"). L'applicazione usa il token di accesso quando si accede all'Archivio Azure Data Lake e il token di aggiornamento quando un token di accesso scade per ottenerne un altro.Your application uses the access token when accessing Azure Data Lake Store and the refresh token to get another access token when an access token expires.

     {"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","expires_on":"1461865782","not_before":    "1461861882","resource":"https://management.core.windows.net/","access_token":"<REDACTED>","refresh_token":"<REDACTED>","id_token":"<REDACTED>"}
    
  4. Quando il token di accesso scade, è possibile richiederne uno nuovo tramite il token di aggiornamento come illustrato di seguito:When the access token expires, you can request a new access token using the refresh token, as shown below:

     curl -X POST https://login.microsoftonline.com/<TENANT-ID>/oauth2/token  \
          -F grant_type=refresh_token \
          -F resource=https://management.core.windows.net/ \
          -F client_id=<CLIENT-ID> \
          -F refresh_token=<REFRESH-TOKEN>
    

Per altre informazioni sull'autenticazione utente interattiva, vedere Flusso di concessione del codice di autorizzazione.For more information on interactive user authentication, see Authorization code grant flow.

Autenticazione da servizio a servizio (non interattiva)Service-to-service authentication (non-interactive)

Con questo metodo, l'applicazione fornisce le proprie credenziali per eseguire le operazioni.Using this method, application provides its own credentials to perform the operations. A tale scopo è necessario inviare una richiesta POST come la seguente:For this, you must issue a POST request like the one shown below:

curl -X POST https://login.microsoftonline.com/<TENANT-ID>/oauth2/token  \
  -F grant_type=client_credentials \
  -F resource=https://management.core.windows.net/ \
  -F client_id=<CLIENT-ID> \
  -F client_secret=<AUTH-KEY>

L'output della richiesta include un token di autorizzazione (indicato da access-token nell'output riportato di seguito) che verrà passato successivamente con le chiamate API REST.The output of this request will include an authorization token (denoted by access-token in the output below) that you will subsequently pass with your REST API calls. Salvare questo token di autenticazione in un file di testo, che sarà necessario più avanti in questo articolo.Save this authentication token in a text file; you will need this later in this article.

{"token_type":"Bearer","expires_in":"3599","expires_on":"1458245447","not_before":"1458241547","resource":"https://management.core.windows.net/","access_token":"<REDACTED>"}

Questo articolo usa l'approccio non interattivo .This article uses the non-interactive approach. Per altre informazioni sull'autenticazione non interattiva (chiamate da servizio a servizio), vedere Chiamate da servizio a servizio tramite le credenziali.For more information on non-interactive (service-to-service calls), see Service to service calls using credentials.

Creare un account di Analisi Data LakeCreate a Data Lake Analytics account

È necessario creare un gruppo di risorse di Azure e un account Data Lake Store prima di poter creare un account Data Lake Analytics.You must create an Azure Resource group, and a Data Lake Store account before you can create a Data Lake Analytics account. Vedere Creare un account Data Lake Store.See Create a Data Lake Store account.

Il comando Curl seguente illustra come creare un account:The following Curl command shows how to create an account:

curl -i -X PUT -H "Authorization: Bearer <REDACTED>" -H "Content-Type: application/json" https://management.azure.com/subscriptions/<AzureSubscriptionID>/resourceGroups/<AzureResourceGroupName>/providers/Microsoft.DataLakeAnalytics/accounts/<NewAzureDataLakeAnalyticsAccountName>?api-version=2016-11-01 -d@"C:\tutorials\adla\CreateDataLakeAnalyticsAccountRequest.json"

Sostituire <REDACTED> con il token di autorizzazione, <AzureSubscriptionID> con l'ID sottoscrizione, <AzureResourceGroupName> con il nome di un gruppo di risorse di Azure esistente e <NewAzureDataLakeAnalyticsAccountName> con il nome di un nuovo account Data Lake Analytics.Replace <REDACTED> with the authorization token, <AzureSubscriptionID> with your subscription ID, <AzureResourceGroupName> with an existing Azure Resource Group name, and <NewAzureDataLakeAnalyticsAccountName> with a new Data Lake Analytics Account name. Il payload della richiesta per questo comando è contenuto nel file CreateDatalakeAnalyticsAccountRequest.json specificato per il parametro -d precedente.The request payload for this command is contained in the CreateDatalakeAnalyticsAccountRequest.json file that is provided for the -d parameter above. Il contenuto del file input.json è simile al seguente:The contents of the input.json file resemble the following:

{  
    "location": "East US 2",  
    "name": "myadla1004",  
    "tags": {},  
    "properties": {  
        "defaultDataLakeStoreAccount": "my1004store",  
        "dataLakeStoreAccounts": [  
            {  
                "name": "my1004store"  
            }     
        ]
    }  
}  

Elencare gli account di Data Lake Analytics in una sottoscrizioneList Data Lake Analytics accounts in a subscription

Il comando Curl seguente illustra come elencare gli account in una sottoscrizione:The following Curl command shows how to list accounts in a subscription:

curl -i -X GET -H "Authorization: Bearer <REDACTED>" https://management.azure.com/subscriptions/<AzureSubscriptionID>/providers/Microsoft.DataLakeAnalytics/Accounts?api-version=2016-11-01

Sostituire <REDACTED> con il token di autorizzazione e <AzureSubscriptionID> con l'ID sottoscrizione.Replace <REDACTED> with the authorization token, <AzureSubscriptionID> with your subscription ID. L'output è simile a:The output is similar to:

{
    "value": [
        {
        "properties": {
            "provisioningState": "Succeeded",
            "state": "Active",
            "endpoint": "myadla0831.azuredatalakeanalytics.net",
            "accountId": "21e74660-0941-4880-ae72-b143c2615ea9",
            "creationTime": "2016-09-01T12:49:12.7451428Z",
            "lastModifiedTime": "2016-09-01T12:49:12.7451428Z"
        },
        "location": "East US 2",
        "tags": {},
        "id": "/subscriptions/65a1016d-0f67-45d2-b838-b8f373d6d52e/resourceGroups/myadla0831rg/providers/Microsoft.DataLakeAnalytics/accounts/myadla0831",
        "name": "myadla0831",
        "type": "Microsoft.DataLakeAnalytics/accounts"
        },
        {
        "properties": {
            "provisioningState": "Succeeded",
            "state": "Active",
            "endpoint": "myadla1004.azuredatalakeanalytics.net",
            "accountId": "3ff9b93b-11c4-43c6-83cc-276292eeb350",
            "creationTime": "2016-10-04T20:46:42.287147Z",
            "lastModifiedTime": "2016-10-04T20:46:42.287147Z"
        },
        "location": "East US 2",
        "tags": {},
        "id": "/subscriptions/65a1016d-0f67-45d2-b838-b8f373d6d52e/resourceGroups/myadla1004rg/providers/Microsoft.DataLakeAnalytics/accounts/myadla1004",
        "name": "myadla1004",
        "type": "Microsoft.DataLakeAnalytics/accounts"
        }
    ]
}

Ottenere informazioni su un account Data Lake Analytics accountGet information about a Data Lake Analytics account

Il comando Curl seguente illustra come ottenere informazioni su un account:The following Curl command shows how to get an account information:

curl -i -X GET -H "Authorization: Bearer <REDACTED>" https://management.azure.com/subscriptions/<AzureSubscriptionID>/resourceGroups/<AzureResourceGroupName>/providers/Microsoft.DataLakeAnalytics/accounts/<DataLakeAnalyticsAccountName>?api-version=2015-11-01

Sostituire <REDACTED> con il token di autorizzazione, <AzureSubscriptionID> con l'ID sottoscrizione, <AzureResourceGroupName> con il nome di un gruppo di risorse di Azure esistente e <DataLakeAnalyticsAccountName> con il nome di un account Data Lake Analytics esistente.Replace <REDACTED> with the authorization token, <AzureSubscriptionID> with your subscription ID, <AzureResourceGroupName> with an existing Azure Resource Group name, and <DataLakeAnalyticsAccountName> with the name of an existing Data Lake Analytics Account. L'output è simile a:The output is similar to:

{
    "properties": {
        "defaultDataLakeStoreAccount": "my1004store",
        "dataLakeStoreAccounts": [
        {
            "properties": {
            "suffix": "azuredatalakestore.net"
            },
            "name": "my1004store"
        }
        ],
        "provisioningState": "Creating",
        "state": null,
        "endpoint": null,
        "accountId": "3ff9b93b-11c4-43c6-83cc-276292eeb350",
        "creationTime": null,
        "lastModifiedTime": null
    },
    "location": "East US 2",
    "tags": {},
    "id": "/subscriptions/65a1016d-0f67-45d2-b838-b8f373d6d52e/resourceGroups/myadla1004rg/providers/Microsoft.DataLakeAnalytics/accounts/myadla1004",
    "name": "myadla1004",
    "type": "Microsoft.DataLakeAnalytics/accounts"
}

Elencare gli archivi Data Lake di account Data Lake AnalyticsList Data Lake Stores of a Data Lake Analytics account

Il comando Curl seguente illustra come elencare gli archivi Data Lake di un account:The following Curl command shows how to list Data Lake Stores of an account:

curl -i -X GET -H "Authorization: Bearer <REDACTED>" https://management.azure.com/subscriptions/<AzureSubscriptionID>/resourceGroups/<AzureResourceGroupName>/providers/Microsoft.DataLakeAnalytics/accounts/<DataLakeAnalyticsAccountName>/DataLakeStoreAccounts/?api-version=2016-11-01

Sostituire <REDACTED> con il token di autorizzazione, <AzureSubscriptionID> con l'ID sottoscrizione, <AzureResourceGroupName> con il nome di un gruppo di risorse di Azure esistente e <DataLakeAnalyticsAccountName> con il nome di un account Data Lake Analytics esistente.Replace <REDACTED> with the authorization token, <AzureSubscriptionID> with your subscription ID, <AzureResourceGroupName> with an existing Azure Resource Group name, and <DataLakeAnalyticsAccountName> with the name of an existing Data Lake Analytics Account. L'output è simile a:The output is similar to:

{
    "value": [
        {
        "properties": {
            "suffix": "azuredatalakestore.net"
        },
        "id": "/subscriptions/65a1016d-0f67-45d2-b838-b8f373d6d52e/resourceGroups/myadla1004rg/providers/Microsoft.DataLakeAnalytics/accounts/myadla1004/dataLakeStoreAccounts/my1004store",
        "name": "my1004store",
        "type": "Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts"
        }
    ]
}

Inviare processi U-SQLSubmit U-SQL jobs

Il comando Curl seguente illustra come inviare un processo U-SQL:The following Curl command shows how to submit a U-SQL job:

curl -i -X PUT -H "Authorization: Bearer <REDACTED>" https://<DataLakeAnalyticsAccountName>.azuredatalakeanalytics.net/Jobs/<NewGUID>?api-version=2016-03-20-preview -d@"C:\tutorials\adla\SubmitADLAJob.json"

Sostituire <REDACTED> con il token di autorizzazione e <DataLakeAnalyticsAccountName> con il nome di un account Data Lake Analytics esistente.Replace <REDACTED> with the authorization token, <DataLakeAnalyticsAccountName> with the name of an existing Data Lake Analytics Account. Il payload della richiesta per questo comando è contenuto nel file SubmitADLAJob.json fornito per il parametro -d indicato in precedenza.The request payload for this command is contained in the SubmitADLAJob.json file that is provided for the -d parameter above. Il contenuto del file input.json è simile al seguente:The contents of the input.json file resemble the following:

{
    "jobId": "8f8ebf8c-4b63-428a-ab46-a03d2cc5b65a",
    "name": "convertTSVtoCSV",
    "type": "USql",
    "degreeOfParallelism": 1,
    "priority": 1000,
    "properties": {
        "type": "USql",
        "script": "@searchlog =\n    EXTRACT UserId          int,\n            Start           DateTime,\n            Region          string,\n            Query          
    string,\n            Duration        int?,\n            Urls            string,\n            ClickedUrls     string\n    FROM \"/Samples/Data/SearchLog.tsv\"\n    US
    ING Extractors.Tsv();\n\nOUTPUT @searchlog   \n    TO \"/Output/SearchLog-from-Data-Lake.csv\"\nUSING Outputters.Csv();"
    }
}

L'output è simile a:The output is similar to:

{
    "jobId": "8f8ebf8c-4b63-428a-ab46-a03d2cc5b65a",
    "name": "convertTSVtoCSV",
    "type": "USql",
    "submitter": "myadl@SPI",
    "degreeOfParallelism": 1,
    "priority": 1000,
    "submitTime": "2016-10-05T13:54:59.9871859+00:00",
    "state": "Compiling",
    "result": "Succeeded",
    "stateAuditRecords": [
        {
        "newState": "New",
        "timeStamp": "2016-10-05T13:54:59.9871859+00:00",
        "details": "userName:myadl@SPI;submitMachine:N/A"
        }
    ],
    "properties": {
        "owner": "myadl@SPI",
        "resources": [],
        "runtimeVersion": "default",
        "rootProcessNodeId": "00000000-0000-0000-0000-000000000000",
        "algebraFilePath": "adl://myadls0831.azuredatalakestore.net/system/jobservice/jobs/Usql/2016/10/05/13/54/8f8ebf8c-4b63-428a-ab46-a03d2cc5b65a/algebra.xml",
        "compileMode": "Semantic",
        "errorSource": "Unknown",
        "totalCompilationTime": "PT0S",
        "totalPausedTime": "PT0S",
        "totalQueuedTime": "PT0S",
        "totalRunningTime": "PT0S",
        "type": "USql"
    }
}

Elencare i processi U-SQLList U-SQL jobs

Il comando Curl seguente illustra come elencare i processi U-SQL:The following Curl command shows how to list U-SQL jobs:

curl -i -X GET -H "Authorization: Bearer <REDACTED>" https://<DataLakeAnalyticsAccountName>.azuredatalakeanalytics.net/Jobs?api-version=2016-11-01 

Sostituire <REDACTED> con il token di autorizzazione e <DataLakeAnalyticsAccountName> con il nome di un account Data Lake Analytics esistente.Replace <REDACTED> with the authorization token, and <DataLakeAnalyticsAccountName> with the name of an existing Data Lake Analytics Account.

L'output è simile a:The output is similar to:

{
"value": [
    {
    "jobId": "65cf1691-9dbe-43cd-90ed-1cafbfb406fb",
    "name": "convertTSVtoCSV",
    "type": "USql",
    "submitter": "someone@microsoft.com",
    "account": null,
    "degreeOfParallelism": 1,
    "priority": 1000,
    "submitTime": "Wed, 05 Oct 2016 13:46:53 GMT",
    "startTime": "Wed, 05 Oct 2016 13:47:33 GMT",
    "endTime": "Wed, 05 Oct 2016 13:48:07 GMT",
    "state": "Ended",
    "result": "Succeeded",
    "errorMessage": null,
    "storageAccounts": null,
    "stateAuditRecords": null,
    "logFilePatterns": null,
    "properties": null
    },
    {
    "jobId": "8f8ebf8c-4b63-428a-ab46-a03d2cc5b65a",
    "name": "convertTSVtoCSV",
    "type": "USql",
    "submitter": "someoneadl@SPI",
    "account": null,
    "degreeOfParallelism": 1,
    "priority": 1000,
    "submitTime": "Wed, 05 Oct 2016 13:54:59 GMT",
    "startTime": "Wed, 05 Oct 2016 13:55:43 GMT",
    "endTime": "Wed, 05 Oct 2016 13:56:11 GMT",
    "state": "Ended",
    "result": "Succeeded",
    "errorMessage": null,
    "storageAccounts": null,
    "stateAuditRecords": null,
    "logFilePatterns": null,
    "properties": null
    }
],
"nextLink": null,
"count": null
}

Ottenere gli elementi del catalogoGet catalog items

Il comando Curl seguente illustra come ottenere i database dal catalogo:The following Curl command shows how to get the databases from the catalog:

curl -i -X GET -H "Authorization: Bearer <REDACTED>" https://<DataLakeAnalyticsAccountName>.azuredatalakeanalytics.net/catalog/usql/databases?api-version=2016-11-01

L'output è simile a:The output is similar to:

{
"@odata.context":"https://myadla0831.azuredatalakeanalytics.net/sqlip/$metadata#databases","value":[
    {
    "computeAccountName":"myadla0831","databaseName":"mytest","version":"f6956327-90b8-4648-ad8b-de3ff09274ea"
    },{
    "computeAccountName":"myadla0831","databaseName":"master","version":"e8bca908-cc73-41a3-9564-e9bcfaa21f4e"
    }
]
}

Vedere ancheSee also