Share via


Pandas gebruiken om Azure Data Lake Storage Gen2-gegevens te lezen/schrijven in 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-, 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 een secundair Azure Data Lake Storage Gen2-account (dit is niet standaard ingesteld op de 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. 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.

    Schermopname van het maken van een gekoppelde service met behulp van een ADLS Gen2-toegangssleutel voor opslag.

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]

Schermopname van het maken van een beheerd privé-eindpunt naar een ADLS Gen2-opslag met behulp van een blob-eindpunt.

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 het Azure Portal

Meld u aan bij het Azure-portaal.

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

Pandas kan ADLS-gegevens lezen/schrijven door het bestandspad rechtstreeks vanuit uw standaard-ADLS Gen 2-opslag 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 & geheim, SAS-sleutel, opslagaccountsleutel en verbindingsreeks rechtstreeks door te geven.

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'})

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 Microsoft Excel-bestanden

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')