자습서: SQL Server 빅 데이터 클러스터에서 HDFS 쿼리

적용 대상: 예SQL Server 2019 (15.x)

이 자습서에서는 SQL Server 2019 빅 데이터 클러스터에서 HDFS 데이터를 쿼리하는 방법을 보여 줍니다.

이 자습서에서는 다음 작업 방법을 알아봅니다.

  • 빅 데이터 클러스터의 HDFS 데이터를 가리키는 외부 테이블을 만듭니다.
  • 이 데이터를 마스터 인스턴스의 중요 데이터와 조인합니다.

원하는 경우 이 자습서의 명령을 위해 스크립트를 다운로드하여 실행할 수 있습니다. 자세한 내용은 GitHub의 데이터 가상화 샘플을 참조하세요.

7분 분량의 다음 동영상에서는 빅 데이터 클러스터에서 HDFS 데이터를 쿼리하는 과정을 안내합니다.

필수 조건

HDFS에 대한 외부 테이블 만들기

스토리지 풀은 HDFS에 저장된 CSV 파일의 웹 클릭스트림 데이터를 포함합니다. 다음 단계를 사용하여 해당 파일의 데이터에 액세스할 수 있는 외부 테이블을 정의합니다.

  1. Azure Data Studio에서 빅 데이터 클러스터의 SQL Server 마스터 인스턴스에 연결합니다. 자세한 내용은 SQL Server 마스터 인스턴스에 연결을 참조하세요.

  2. 서버 창에서 연결을 두 번 클릭하여 SQL Server 마스터 인스턴스의 서버 대시보드를 표시합니다. 새 쿼리 를 선택합니다.

    SQL Server 마스터 인스턴스 쿼리

  3. 다음 Transact-SQL 명령을 실행하여 마스터 인스턴스의 Sales 데이터베이스로 컨텍스트를 변경합니다.

    USE Sales
    GO
    
  4. HDFS에서 읽을 CSV 파일의 형식을 정의합니다. F5 키를 눌러 문을 실행합니다.

    CREATE EXTERNAL FILE FORMAT csv_file
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS(
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '"',
            FIRST_ROW = 2,
            USE_TYPE_DEFAULT = TRUE)
    );
    
  5. 스토리지 풀에 외부 데이터 원본이 아직 없는 경우 새로 만듭니다.

    IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlStoragePool')
    BEGIN
      CREATE EXTERNAL DATA SOURCE SqlStoragePool
      WITH (LOCATION = 'sqlhdfs://controller-svc/default');
    END
    
  6. 스토리지 풀에서 /clickstream_data를 읽을 수 있는 외부 테이블을 만듭니다. SqlStoragePool 은 빅 데이터 클러스터의 마스터 인스턴스에서 액세스할 수 있습니다.

    CREATE EXTERNAL TABLE [web_clickstreams_hdfs]
    ("wcs_click_date_sk" BIGINT , "wcs_click_time_sk" BIGINT , "wcs_sales_sk" BIGINT , "wcs_item_sk" BIGINT , "wcs_web_page_sk" BIGINT , "wcs_user_sk" BIGINT)
    WITH
    (
        DATA_SOURCE = SqlStoragePool,
        LOCATION = '/clickstream_data',
        FILE_FORMAT = csv_file
    );
    GO
    

데이터 쿼리

다음 쿼리를 실행하여 web_clickstream_hdfs 외부 테이블의 HDFS 데이터를 로컬 Sales 데이터베이스의 관계형 데이터와 조인합니다.

SELECT  
    wcs_user_sk,
    SUM( CASE WHEN i_category = 'Books' THEN 1 ELSE 0 END) AS book_category_clicks,
    SUM( CASE WHEN i_category_id = 1 THEN 1 ELSE 0 END) AS [Home & Kitchen],
    SUM( CASE WHEN i_category_id = 2 THEN 1 ELSE 0 END) AS [Music],
    SUM( CASE WHEN i_category_id = 3 THEN 1 ELSE 0 END) AS [Books],
    SUM( CASE WHEN i_category_id = 4 THEN 1 ELSE 0 END) AS [Clothing & Accessories],
    SUM( CASE WHEN i_category_id = 5 THEN 1 ELSE 0 END) AS [Electronics],
    SUM( CASE WHEN i_category_id = 6 THEN 1 ELSE 0 END) AS [Tools & Home Improvement],
    SUM( CASE WHEN i_category_id = 7 THEN 1 ELSE 0 END) AS [Toys & Games],
    SUM( CASE WHEN i_category_id = 8 THEN 1 ELSE 0 END) AS [Movies & TV],
    SUM( CASE WHEN i_category_id = 9 THEN 1 ELSE 0 END) AS [Sports & Outdoors]
  FROM [dbo].[web_clickstreams_hdfs]
  INNER JOIN item it ON (wcs_item_sk = i_item_sk
                        AND wcs_user_sk IS NOT NULL)
GROUP BY  wcs_user_sk;
GO

정리

다음 명령을 사용하여 이 자습서에서 사용되는 외부 테이블을 제거합니다.

DROP EXTERNAL TABLE [dbo].[web_clickstreams_hdfs];
GO

다음 단계

빅 데이터 클러스터에서 Oracle을 쿼리하는 방법을 알아보려면 다음 문서로 이동합니다.