Share via


Zelfstudie: Pandas gebruiken om Azure Data Lake Storage Gen2-gegevens te lezen/schrijven in een serverloze Apache Spark-pool in Synapse Analytics

Meer informatie over het gebruik van Pandas om gegevens te lezen/schrijven naar Azure Data Lake Storage Gen2 (ADLS) met behulp van een serverloze Apache Spark-pool in Azure Synapse Analytics. Voorbeelden in deze zelfstudie laten zien hoe u CSV-gegevens kunt lezen met Pandas in Synapse, evenals Excel- en Parquet-bestanden.

In deze zelfstudie leert u het volgende:

  • ADLS Gen2-gegevens lezen/schrijven met pandas in een Spark-sessie.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

  • Azure Synapse Analytics-werkruimte met een Azure Data Lake Storage Gen2-opslagaccount dat is geconfigureerd als de standaardopslag (of primaire opslag). U moet de bijdrager voor opslagblobgegevens zijn van het Data Lake Storage Gen2-bestandssysteem waarmee u werkt.

  • Serverloze Apache Spark-pool in uw Azure Synapse Analytics-werkruimte. Zie Een Spark-pool maken in Azure Synapse voor meer informatie.

  • Configureer het secundaire Azure Data Lake Storage Gen2-account (dit is niet standaard ingesteld op synapse-werkruimte). U moet de bijdrager voor opslagblobgegevens zijn van het Data Lake Storage Gen2-bestandssysteem waarmee u werkt.

  • Gekoppelde services maken- In Azure Synapse Analytics definieert een gekoppelde service uw verbindingsgegevens met de service. In deze zelfstudie voegt u een gekoppelde Azure Synapse Analytics- en Azure Data Lake Storage Gen2-service toe.

    1. Open Azure Synapse Studio en selecteer het tabblad Beheren .
    2. Selecteer Gekoppelde services onder Externe verbindingen.
    3. Selecteer Nieuw om een gekoppelde service toe te voegen.
    4. Selecteer de tegel Azure Data Lake Storage Gen2 in de lijst en selecteer Doorgaan.
    5. Voer uw verificatiereferenties in. Accountsleutel, service-principal (SP), Referenties en Manged Service Identity (MSI) worden momenteel ondersteund voor verificatietypen. Zorg ervoor dat Inzender voor opslagblobgegevens is toegewezen aan opslag voor SP en MSI voordat u deze kiest voor verificatie. Test de verbinding om te controleren of uw referenties juist zijn. Selecteer Maken.

    Screenshot of creating a linked service using an ADLS Gen2 storage access key.

Belangrijk

  • Als de bovenstaande gekoppelde service voor Azure Data Lake Storage Gen2 gebruikmaakt van een beheerd privé-eindpunt (met een dfs-URI ), moeten we een ander secundair beheerd privé-eindpunt maken met behulp van de Azure Blob Storage-optie (met een blob-URI ) om ervoor te zorgen dat de interne fsspec/adlfs-code verbinding kan maken met behulp van de BlobServiceClient-interface .
  • Als het secundaire beheerde privé-eindpunt niet juist is geconfigureerd, wordt er een foutbericht weergegeven zoals ServiceRequestError: Kan geen verbinding maken met host [storageaccountname].blob.core.windows.net:443 ssl:True [Naam of service niet bekend]

Screenshot of creating a managed private end-point to an ADLS Gen2 storage using blob endpoint.

Notitie

  • De pandas-functie wordt ondersteund in Python 3.8 en spark3 serverloze Apache Spark-pool in Azure Synapse Analytics.
  • Ondersteuning beschikbaar voor de volgende versies: pandas 1.2.3, fsspec 2021.10.0, adlfs 0.7.7
  • Hebt u mogelijkheden om zowel de URI van Azure Data Lake Storage Gen2 (abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path) als de korte FSSPEC-URL (abfs[s]://container_name/file_path) te ondersteunen.

Meld u aan bij Azure Portal

Meld u aan bij de Azure-portal.

Gegevens lezen/schrijven naar het standaard ADLS-opslagaccount van de Synapse-werkruimte

Pandas kan ADLS-gegevens lezen/schrijven door het bestandspad rechtstreeks op te geven.

Voer de volgende code uit.

Notitie

Werk de bestands-URL in dit script bij voordat u deze uitvoert.

   #Read data file from URI of default Azure Data Lake Storage Gen2

   import pandas

   #read csv file
   df = pandas.read_csv('abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path')
   print(df)

   #write csv file
   data = pandas.DataFrame({'Name':['A', 'B', 'C', 'D'], 'ID':[20, 21, 19, 18]})
   data.to_csv('abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path')
   #Read data file from FSSPEC short URL of default Azure Data Lake Storage Gen2

   import pandas

   #read csv file
   df = pandas.read_csv('abfs[s]://container_name/file_path')
   print(df)

   #write csv file
   data = pandas.DataFrame({'Name':['A', 'B', 'C', 'D'], 'ID':[20, 21, 19, 18]})
   data.to_csv('abfs[s]://container_name/file_path')

Gegevens lezen/schrijven met behulp van een secundair ADLS-account

Pandas kan secundaire ADLS-accountgegevens lezen/schrijven:

  • met behulp van een gekoppelde service (met verificatieopties: sleutel van opslagaccount, service-principal, beheert service-id's en referenties).
  • met opslagopties om client-id en -geheim, SAS-sleutel, opslagaccountsleutel en verbindingsreeks rechtstreeks door te geven.

Gekoppelde service gebruiken

Voer de volgende code uit.

Notitie

Werk de bestands-URL en de naam van de gekoppelde service in dit script bij voordat u deze uitvoert.

   #Read data file from URI of secondary Azure Data Lake Storage Gen2

   import pandas
   
   #read data file
   df = pandas.read_csv('abfs[s]://file_system_name@account_name.dfs.core.windows.net/   file_path', storage_options = {'linked_service' : 'linked_service_name'})
   print(df)
   
   #write data file
   data = pandas.DataFrame({'Name':['A', 'B', 'C', 'D'], 'ID':[20, 21, 19, 18]})
   data.to_csv('abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path',    storage_options = {'linked_service' : 'linked_service_name'})
   #Read data file from FSSPEC short URL of default Azure Data Lake Storage Gen2

   import pandas
   
   #read data file
   df = pandas.read_csv('abfs[s]://container_name/file_path', storage_options =       {'linked_service' : 'linked_service_name'})
   print(df)
   
   #write data file
   data = pandas.DataFrame({'Name':['A', 'B', 'C', 'D'], 'ID':[20, 21, 19, 18]})
   data.to_csv('abfs[s]://container_name/file_path', storage_options = {'linked_service' :    'linked_service_name'})

Gebruik opslagopties om client-id & geheim, SAS-sleutel, opslagaccountsleutel en verbindingsreeks rechtstreeks door te geven.

Voer de volgende code uit.

Notitie

Werk de bestands-URL en storage_options in dit script bij voordat u het uitvoert.

   #Read data file from URI of secondary Azure Data Lake Storage Gen2

   import pandas
   
   #read data file
   df = pandas.read_csv('abfs[s]://file_system_name@account_name.dfs.core.windows.net/   file_path', storage_options = {'account_key' : 'account_key_value'})
 
   ## or storage_options = {'sas_token' : 'sas_token_value'}
   ## or storage_options = {'connection_string' : 'connection_string_value'}
   ## or storage_options = {'tenant_id': 'tenant_id_value', 'client_id' : 'client_id_value',    'client_secret': 'client_secret_value'}

   print(df)
   
   #write data file
   data = pandas.DataFrame({'Name':['A', 'B', 'C', 'D'], 'ID':[20, 21, 19, 18]})
   data.to_csv('abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path',    storage_options = {'account_key' : 'account_key_value'})
 
   ## or storage_options = {'sas_token' : 'sas_token_value'}
   ## or storage_options = {'connection_string' : 'connection_string_value'}
   ## or storage_options = {'tenant_id': 'tenant_id_value', 'client_id' : 'client_id_value',    'client_secret': 'client_secret_value'}
   #Read data file from FSSPEC short URL of default Azure Data Lake Storage Gen2

   import pandas
   
   #read data file
   df = pandas.read_csv('abfs[s]://container_name/file_path', storage_options = {'account_key' :    'account_key_value'})
 
   ## or storage_options = {'sas_token' : 'sas_token_value'}
   ## or storage_options = {'connection_string' : 'connection_string_value'}
   ## or storage_options = {'tenant_id': 'tenant_id_value', 'client_id' : 'client_id_value',    'client_secret': 'client_secret_value'}

   print(df)
   
   #write data file
   data = pandas.DataFrame({'Name':['A', 'B', 'C', 'D'], 'ID':[20, 21, 19, 18]})
   data.to_csv('abfs[s]://container_name/file_path', storage_options = {'account_key' :    'account_key_value'})
 
   ## or storage_options = {'sas_token' : 'sas_token_value'}
   ## or storage_options = {'connection_string' : 'connection_string_value'}
   ## or storage_options = {'tenant_id': 'tenant_id_value', 'client_id' : 'client_id_value',    'client_secret': 'client_secret_value'}

Voorbeeld voor het lezen/schrijven van parquet-bestand

Voer de volgende code uit.

Notitie

Werk de bestands-URL in dit script bij voordat u deze uitvoert.

   import pandas
   
   #read parquet file
   df = pandas.read_parquet('abfs[s]://file_system_name@account_name.dfs.core.windows.net/   parquet_file_path')
   print(df)
   
   #write parquet file
   df.to_parquet('abfs[s]://file_system_name@account_name.dfs.core.windows.net/   parquet_file_path')

Voorbeeld voor het lezen/schrijven van excel-bestand

Voer de volgende code uit.

Notitie

Werk de bestands-URL in dit script bij voordat u deze uitvoert.

   import pandas
   
   #read excel file
   df = pandas.read_excel('abfs[s]://file_system_name@account_name.dfs.core.windows.net/   excel_file_path')
   print(df)
   
   #write excel file
   df.to_excel('abfs[s]://file_system_name@account_name.dfs.core.windows.net/excel_file_path')

Volgende stappen