자습서: Pandas를 사용하여 Synapse Analytics의 서버리스 Apache Spark 풀에서 Azure Data Lake Storage Gen2 데이터 읽기/쓰기
Pandas를 사용하여 Azure Synapse Analytics의 서버리스 Apache Spark 풀에서 Azure Data Lake Storage Gen2 데이터를 읽고 쓰는 방법을 배웁니다. 이 자습서의 예제에서는 Synapse에서 Pandas를 사용하여 csv 데이터를 읽는 방법뿐만 아니라 Excel 및 Parquet 파일을 읽는 방법을 보여줍니다.
이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.
- Spark 세션에서 Pandas를 사용하여 ADLS Gen2 데이터를 읽고 씁니다.
Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
필수 조건
Azure Synapse Analytics 작업 영역(기본 스토리지로 구성된 Azure Data Lake Storage Gen2 스토리지 또는 기본 스토리지 계정이 있음). 사용하는 Data Lake Storage Gen2 파일 시스템의 Storage Blob 데이터 기여자여야 합니다.
Azure Synapse Analytics 작업 영역의 서버리스 Apache Spark 풀 자세한 내용은 Azure Synapse에서 Spark 풀 만들기를 참조하세요.
보조 Azure Data Lake Storage Gen2 계정(Synapse 작업 영역에 대한 기본값이 아님)을 구성합니다. 사용하는 Data Lake Storage Gen2 파일 시스템의 Storage Blob 데이터 기여자여야 합니다.
연결된 서비스 만들기 - Azure Synapse Analytics에서 연결된 서비스는 서비스에 대한 연결 정보를 정의합니다. 이 자습서에서는 Azure Synapse Analytics와 Azure Data Lake Storage Gen2 연결 서비스를 추가합니다.
- Azure Synapse Studio를 열고 관리 탭을 선택합니다.
- 외부 연결에서 연결된 서비스를 선택합니다.
- 연결된 서비스를 추가하려면 새로 만들기를 선택합니다.
- 목록에서 Azure Data Lake Storage Gen2 타일을 선택하고 계속을 선택합니다.
- 인증 자격 증명을 입력합니다. 계정 키, 서비스 주체(SP), 자격 증명 및 관리 서비스 ID(Manged Service Identity)는 현재 지원되는 인증 유형입니다. 인증을 위해 선택하기 전에 Storage BLOB 데이터 기여자가 SP 및 MSI용 스토리지에 할당되어 있는지 확인합니다. 연결 테스트로 자격 증명이 올바른지 확인합니다. 만들기를 선택합니다.
Important
- 위에서 만든 Azure Data Lake Storage Gen2에 대한 연결된 서비스가 관리형 프라이빗 엔드포인트(dfs URI 포함)를 사용하는 경우 Azure Blob Storage 옵션(Blob URI 포함)을 사용하여 다른 보조 관리형 프라이빗 엔드포인트를 만들어 내부 fsspec/adlfs 코드가 BlobServiceClient 인터페이스를 사용하여 연결할 수 있도록 해야 합니다.
- 보조 관리형 프라이빗 엔드포인트가 올바르게 구성되지 않은 경우 ServiceRequestError: 호스트 [storageaccountname].blob.core.windows.net:443 ssl:True [이름 또는 서비스를 알 수 없음]에 연결할 수 없음과 같은 오류 메시지가 표시됩니다.
참고 항목
- Pandas 기능은 Azure Synapse Analytics Python 3.8 및 Spark3 서버리스 Apache Spark 풀에서 지원됩니다.
- 다음 버전에 사용할 수 있는 지원: pandas 1.2.3, fsspec 2021.10.0, adlfs 0.7.7
- Azure Data Lake Storage Gen2 URI(abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path) 및 FSSPEC short URL(abfs[s]://container_name/file_path) 둘 다를 지원할 수 있습니다.
Azure Portal에 로그인
Azure Portal에 로그인합니다.
Synapse 작업 영역의 기본 ADLS 스토리지 계정에 데이터 읽기/쓰기
Pandas는 파일 경로를 직접 지정하여 ADLS 데이터를 읽고 쓸 수 있습니다.
다음 코드를 실행합니다.
참고 항목
이 스크립트를 실행하기 전에 파일 URL을 업데이트합니다.
#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')
보조 ADLS 계정을 사용하여 데이터 읽기/쓰기
Pandas는 보조 ADLS 계정 데이터를 읽고 쓸 수 있습니다.
- 연결된 서비스 사용(인증 옵션 사용 - 스토리지 계정 키, 서비스 주체, 서비스 ID 및 자격 증명 관리)
- 스토리지 옵션을 사용하여 클라이언트 ID 및 비밀, SAS 키, 스토리지 계정 키 및 연결 문자열을 직접 전달합니다.
연결된 서비스 사용
다음 코드를 실행합니다.
참고 항목
실행하기 전에 이 스크립트에서 파일 URL 및 연결된 서비스 이름을 업데이트합니다.
#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'})
스토리지 옵션을 사용하여 클라이언트 ID 및 비밀, SAS 키, 스토리지 계정 키 및 연결 문자열을 직접 전달합니다.
다음 코드를 실행합니다.
참고 항목
실행하기 전에 이 스크립트에서 파일 URL과 storage_options를 업데이트합니다.
#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'}
parquet 파일을 읽고 쓰는 예제
다음 코드를 실행합니다.
참고 항목
이 스크립트를 실행하기 전에 파일 URL을 업데이트합니다.
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')
Excel 파일을 읽고 쓰는 예제
다음 코드를 실행합니다.
참고 항목
이 스크립트를 실행하기 전에 파일 URL을 업데이트합니다.
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')