Azure Synapse Analytics Serverless SQL Pool에서 Delta Lake 쿼리(Preview)

소개



빌드 당 미리보기가 시작된 Synapse Analytics Serverless SQL Pool에서 Delta Lake 자습서를 소개합니다.

참고 MSDocs 튜토리얼의 확장 버전으로 사용하십시오.

※2021/6의 정보가 됩니다

참고:



Query Delta Lake files (preview) using serverless SQL pool in Azure Synapse Analytics

Synapse SQL에서 외부 테이블 사용

Query Delta Lake files using T-SQL language in Azure Synapse Analytics

Delta Lake 정보



우선은 전장 된장입니다.

Databricks의 시작 방법

Delta Lake 개요
※0.3 무렵이므로 낡은 점 있을지도

Databricks의 CSA 쪽이 엄청 알기 쉽게 활용 방법까지 기사를 써 줍니다.

@ 타카 _ 야요이

Qiita 검색 결과

샘플 코드



Spark Pool에서 데이터 준비



Azure Open Datasets 에서 미국 인구 데이터를 사용합니다.

300만 건 정도의 데이터입니다.

pyspark

# Create Data Frame and Display
from azureml.opendatasets import UsPopulationCounty

population = UsPopulationCounty()
population_df = population.to_spark_dataframe()
display(population_df.limit(5))


pyspark

# Write format Delta

(population_df.write
.format("delta")
.mode("overwrite")
.save("abfss://datalake@<Azure Data Lake Storage Gen2名を入れてください>.dfs.core.windows.net/bronze/UsPopulationCounty/"))



그건 그렇고



Spark SQL로 테이블 등록
이 경우 Spark 테이블로 등록되지만 지금은 ServerelssSQLPool에서 제대로 작동하지 않습니다.

sql

CREATE TABLE UsPopulationCounty
USING DELTA
LOCATION 'abfss://datalake@<Azure Data Lake Storage Gen2名を入れてください>.dfs.core.windows.net/bronze/UsPopulationCounty/'



Serverless SQL Pool에서 쿼리



오른쪽 클릭에서 100행 선택 → 경로를 폴더로 변경하여 FORMAT을 DELTA로 변경하기 쉽습니다.

sql

SELECT
    TOP 100 *
FROM
    OPENROWSET(
        BULK 'https://dlsanalyticsdemo.dfs.core.windows.net/datalake/bronze/UsPopulationCounty/',
        FORMAT='DELTA'
    ) AS [result]



Serverless SQL Pool에서 외부 테이블화



이쪽도 오른쪽 클릭으로부터 스크립트를 생성시키는 것이 편합니다.



형식이 Delta이고 위치가 파일이므로 변경합니다. (하이라이트 개소)





수정 후 SQL 예제

sql

IF NOT EXISTS (SELECT * FROM sys.external_file_formats WHERE name = 'SynapseDeltaFormat') 
    CREATE EXTERNAL FILE FORMAT [SynapseDeltaFormat] 
    WITH ( FORMAT_TYPE = delta)
GO

IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = 'datalake_<>_dfs_core_windows_net') 
    CREATE EXTERNAL DATA SOURCE [datalake_<>_dfs_core_windows_net] 
    WITH (
        LOCATION   = 'https://<Storage Account 名>.dfs.core.windows.net/datalake', 
    )
Go

CREATE EXTERNAL TABLE dbo.UsPopulationCountrySQL (
    [decennialTime] varchar(8000),
    [stateName] varchar(8000),
    [countyName] varchar(8000),
    [population] int,
    [race] varchar(8000),
    [sex] varchar(8000),
    [minAge] int,
    [maxAge] int,
    [year] int
    )
    WITH (
    LOCATION = 'bronze/UsPopulationCounty/',
    DATA_SOURCE = [datalake_<>_dfs_core_windows_net],
    FILE_FORMAT = [SynapseDeltaFormat]
    )
GO

SELECT TOP 100 * FROM dbo.UsPopulationCountrySQL
GO


실행 후 외부 테이블로 표시됩니다.



또한 외부 테이블 정의에 대해서는 디폴트라고 문자 길이가 최대로 취해 버리므로, 적절히 변경합시다.

좋은 웹페이지 즐겨찾기