Freigeben über


Tutorial: Verwenden von Pandas zum Lesen/Schreiben von Azure Data Lake Storage Gen2-Daten in einem serverlosen Apache Spark-Pool in Synapse Analytics

Erfahren Sie, wie Sie Pandas zum Lesen/Schreiben von Daten in Azure Data Lake Storage Gen2 (ADLS) mithilfe eines serverlosen Apache Spark-Pools in Azure Synapse Analytics verwenden. Die Beispiele in diesem Tutorial zeigen, wie Sie CSV-Daten mit Pandas in Synapse sowie Excel- und Parquet-Dateien lesen.

In diesem Tutorial lernen Sie Folgendes:

  • Lesen/Schreiben von ADLS Gen2-Daten mithilfe von Pandas in einer Spark-Sitzung.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Voraussetzungen

  • Azure Synapse Analytics-Arbeitsbereich mit einem als Standardspeicher (oder primärem Speicher) konfigurierten Azure Data Lake Storage Gen2-Speicherkonto. Für das hier verwendete Data Lake Storage Gen2-Dateisystem müssen Sie über die Rolle Mitwirkender an Storage-Blobdaten verfügen.

  • Ein serverloser Apache Spark-Pool in Ihrem Azure Synapse Analytics-Arbeitsbereich. Ausführliche Informationen finden Sie unter Erstellen eines Spark-Pools in Azure Synapse.

  • Konfigurieren Sie das sekundäre Azure Data Lake Storage Gen2-Konto (kein Standardkonto im Synapse-Arbeitsbereich). Für das hier verwendete Data Lake Storage Gen2-Dateisystem müssen Sie über die Rolle Mitwirkender an Storage-Blobdaten verfügen.

  • Erstellen verknüpfter Dienste: In Azure Synapse Analytics definiert ein verknüpfter Dienst die Informationen Ihrer Verbindung mit dem Dienst. In diesem Tutorial fügen Sie einen verknüpften Azure Synapse Analytics-Dienst und einen verknüpften Azure Data Lake Storage Gen2-Dienst hinzu.

    1. Öffnen Sie Azure Synapse Studio, und wechseln Sie zur Registerkarte Verwalten.
    2. Wählen Sie unter Externe Verbindungen die Option Verknüpfte Dienste aus.
    3. Klicken Sie auf Neu, um einen verknüpften Dienst hinzuzufügen.
    4. Wählen Sie in der Liste die Kachel „Azure Data Lake Storage Gen2“ und dann Weiter aus.
    5. Geben Sie Ihre Anmeldeinformationen für die Authentifizierung ein. Kontoschlüssel, Dienstprinzipal (Service Principal, SP), Anmeldeinformationen und verwaltete Dienstidentität (Managed Service Identity, MSI) sind die derzeit unterstützten Authentifizierungstypen. Stellen Sie für SP und MSI sicher, dass ein Mitwirkender an Storage-Blobdaten im Speicher zugewiesen ist, bevor Sie einen dieser Typen für die Authentifizierung auswählen. Wählen Sie Verbindung testen aus, um Ihre Anmeldeinformationen zu überprüfen. Klicken Sie auf Erstellen.

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

Wichtig

  • Wenn der oben erstellte verknüpfte Dienst für Azure Data Lake Storage Gen2 einen verwalteten privaten Endpunkt (mit einem dfs-URI) verwendet, müssen wir einen weiteren sekundären verwalteten privaten Endpunkt mithilfe der Option „Azure Blob Storage“ (mit einem BLOB-URI) erstellen, um sicherzustellen, dass der interne fsspec/adlfs-Code eine Verbindung mithilfe der BlobServiceClient-Schnittstelle herstellen kann.
  • Falls der sekundäre verwaltete private Endpunkt nicht ordnungsgemäß konfiguriert ist, wird eine Fehlermeldung wie ServiceRequestError: Es kann keine Verbindung mit dem Host [storageaccountname].blob.core.windows.net:443 ssl:True hergestellt werden [Name oder Dienst nicht bekannt] angezeigt.

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

Hinweis

  • Das Pandas-Feature wird in Azure Synapse Analytics in serverlosen Apache Spark-Pools mit Python 3.8 und Spark3 unterstützt.
  • Unterstützung ist für die folgenden Versionen verfügbar: pandas 1.2.3, fsspec 2021.10.0, adlfs 0.7.7.
  • Funktionen zur Unterstützung sowohl von Azure Data Lake Storage Gen2-URIs (abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path) als auch von FSSPEC-Kurz-URLs (abfs[s]://container_name/file_path) sind erforderlich.

Melden Sie sich auf dem Azure-Portal an.

Melden Sie sich beim Azure-Portal an.

Lesen/Schreiben von Daten in das ADLS-Standardspeicherkonto des Synapse-Arbeitsbereichs

Pandas kann ADLS-Daten lesen/schreiben, indem der Dateipfad direkt angegeben wird.

Führen Sie den folgenden Code aus.

Hinweis

Aktualisieren Sie die Datei-URL in diesem Skript, bevor Sie es ausführen.

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

Lesen/Schreiben von Daten mithilfe des sekundären ADLS-Kontos

Pandas kann sekundäre ADLS-Kontodaten auf folgende Arten lesen/schreiben:

  • Unter Verwendung eines verknüpften Diensts (mit Authentifizierungsoptionen: Speicherkontoschlüssel, Dienstprinzipal, verwaltete Dienstidentität und Anmeldeinformationen)
  • Unter Verwendung von Speicheroptionen, um Client-ID und Clientgeheimnis, SAS-Schlüssel, Speicherkontoschlüssel und Verbindungszeichenfolge direkt zu übergeben

Unter Verwendung eines verknüpften Diensts

Führen Sie den folgenden Code aus.

Hinweis

Aktualisieren Sie die Datei-URL und den Namen des verknüpften Diensts in diesem Skript, bevor Sie es ausführen.

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

Unter Verwendung von Speicheroptionen, um Client-ID und Clientgeheimnis, SAS-Schlüssel, Speicherkontoschlüssel und Verbindungszeichenfolge direkt zu übergeben

Führen Sie den folgenden Code aus.

Hinweis

Aktualisieren Sie die Datei-URL, und die Werte für „storage_options“ in diesem Skript, bevor Sie es ausführen.

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

Beispiel für das Lesen/Schreiben einer Parquet-Datei

Führen Sie den folgenden Code aus.

Hinweis

Aktualisieren Sie die Datei-URL in diesem Skript, bevor Sie es ausführen.

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

Beispiel für das Lesen/Schreiben einer Excel-Datei

Führen Sie den folgenden Code aus.

Hinweis

Aktualisieren Sie die Datei-URL in diesem Skript, bevor Sie es ausführen.

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

Nächste Schritte