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.
- Open Azure Synapse Studio en selecteer het tabblad Beheren .
- Selecteer Gekoppelde services onder Externe verbindingen.
- Selecteer Nieuw om een gekoppelde service toe te voegen.
- Selecteer de tegel Azure Data Lake Storage Gen2 in de lijst en selecteer Doorgaan.
- 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.
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]
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')