azureBlobStorage 테이블 함수는 Azure Blob Storage에서
ClickHouse로 데이터를 수집하는 빠르고 편리한 방법입니다. 하지만 다음과 같은 이유로
항상 적합한 것은 아닐 수 있습니다:
- 데이터가 Azure Blob Storage에 저장되어 있지 않을 수 있습니다. 예를 들어 Azure SQL Database, Microsoft SQL Server 또는 Cosmos DB에 저장되어 있을 수 있습니다.
- 보안 정책에 따라 Blob Storage에 대한 외부 액세스가 완전히 차단될 수 있습니다. 예를 들어 스토리지 계정이 공개 엔드포인트 없이 잠겨 있는 경우입니다.
Azure Data Factory의 통합 런타임을 사용하면
ClickHouse 인스턴스를 인터넷에 노출하지 않고도 데이터를 전송할 수 있습니다. 이 구성에서는
사설 네트워크를 통해 데이터를 보낼 수 있습니다. 하지만 이는 이
문서의 범위를 벗어납니다. 자세한 내용은 공식 가이드를 참조하십시오:
통합 런타임 만들기 및 구성
ClickHouse를 REST 서비스로 사용하기
Azure Data Factory는 기본 제공
encodeUriComponent 함수를 사용해 이 인코딩을 자동으로 처리하므로 수동으로 인코딩할 필요가 없습니다.col_1, col_2, col_3의 3개 컬럼이 있는
테이블을 가정한 간단한 curl 예시입니다.
JSONEachRow 입력과 완벽하게 호환됩니다.
보시다시피 이 단계에서는 ClickHouse
측에서 특별히 할 작업이 없습니다. HTTP 인터페이스에서 이미
REST 스타일 엔드포인트로 동작하는 데 필요한 모든 기능을 제공하므로
추가 구성이 필요하지 않습니다.
이제 ClickHouse가 REST 엔드포인트처럼 동작하도록 설정했으므로,
이를 사용하도록 Azure Data Factory를 구성할 차례입니다.
다음 단계에서는 Azure Data Factory 인스턴스를 생성하고, ClickHouse 인스턴스에 대한 Linked
Service를 설정하고,
REST 싱크를 위한 데이터셋을 정의한
다음, Azure에서 ClickHouse로 데이터를 전송하는 Copy Data 활동을 생성합니다.
Azure Data Factory 인스턴스 만들기
- Microsoft Azure Portal에 로그인한 다음 Create a resource를 클릭합니다.
- 왼쪽의 Categories 창에서 Analytics를 선택한 다음, 인기 서비스 목록에서 Data Factory를 클릭합니다.
- subscription과 resource group을 선택하고, 새 Data Factory 인스턴스의 이름을 입력한 다음, 지역을 선택하고 버전은 V2로 그대로 둡니다.
- Review + Create를 클릭한 다음, Create를 클릭하여 배포를 시작합니다.
새 REST 기반 Linked Service 만들기
- Microsoft Azure Portal에 로그인한 후 Data Factory 인스턴스를 엽니다.
- Data Factory 개요 페이지에서 Launch Studio를 클릭합니다.
- 왼쪽 메뉴에서 Manage를 선택한 다음 Linked services로 이동하고, + New를 클릭하여 새 Linked Service를 만듭니다.
- New linked service 검색창에 REST를 입력하고 REST를 선택한 다음 Continue를 클릭하여 REST 커넥터 인스턴스를 생성합니다.
- Linked Service 구성 창에서 새 서비스 이름을 입력하고, Base URL 필드를 클릭한 다음 Add dynamic content를 클릭합니다(이 링크는 해당 필드를 선택했을 때만 표시됩니다).
- 동적 콘텐츠 창에서는 매개변수화된 URL을 만들 수 있으며, 이를 사용하면 나중에 서로 다른 테이블용 데이터셋을 만들 때 쿼리를 정의할 수 있습니다. 이렇게 하면 Linked Service를 재사용할 수 있습니다.
-
필터 입력 옆의 **”+“**를 클릭해 새 매개변수를 추가하고,
이름을
pQuery로 지정한 뒤 유형을 String으로 설정하고 기본값을SELECT 1로 설정합니다. Save를 클릭합니다. -
표현식 필드에 다음 내용을 입력한 다음 OK를 클릭합니다.
your-clickhouse-url.com은 실제 ClickHouse 인스턴스 주소로 바꾸십시오. - 기본 양식으로 돌아가 기본 인증을 선택하고, ClickHouse HTTP 인터페이스에 연결할 때 사용하는 사용자 이름과 비밀번호를 입력한 다음 Test connection을 클릭합니다. 모든 구성이 올바르면 성공 메시지가 표시됩니다.
- 설정을 완료하려면 Create를 클릭합니다.
ClickHouse HTTP 인터페이스용 새 데이터셋 만들기
-
사용할 ClickHouse 쿼리 콘솔을 엽니다. ClickHouse Cloud 웹 UI, CLI 클라이언트 또는
평소 쿼리 실행에 사용하는 다른 인터페이스를 사용할 수 있습니다. 그런 다음 대상
테이블을 생성합니다:
- Azure Data Factory Studio에서 왼쪽 창의 Author를 선택합니다. 데이터셋 항목에 마우스를 올리고 점 3개 아이콘을 클릭한 다음 New dataset을 선택합니다.
- 검색창에 REST를 입력하고 REST를 선택한 다음 Continue를 클릭합니다. 데이터셋 이름을 입력하고 이전 단계에서 만든 linked service를 선택합니다. OK를 클릭해 데이터셋을 생성합니다.
-
이제 왼쪽의 Factory Resources 창에 있는 데이터셋 섹션 아래에 방금 생성한
데이터셋이 표시됩니다. 데이터셋을 선택해 속성을 엽니다. Linked Service에서
정의한
pQuery매개변수가 표시됩니다. Value 텍스트 필드를 클릭한 다음 Add dynamic content를 클릭합니다. -
열리는 창에 다음 쿼리를 붙여넣습니다:
쿼리에 있는 모든 작은따옴표
'는 작은따옴표 두 개
''로 바꿔야 합니다. 이는 Azure Data Factory의 표현식 parser 때문에
필요합니다. 이를 이스케이프하지 않으면 바로 오류가 표시되지 않을 수 있지만,
나중에 데이터셋을 사용하거나 저장할 때 실패합니다. 예를 들어, 'best_effort'
는 ''best_effort''로 작성해야 합니다.- 표현식을 저장하려면 OK를 클릭합니다. Test connection을 클릭합니다. 모든 것이 올바르게 구성되었다면 Connection successful 메시지가 표시됩니다. 페이지 상단의 Publish all을 클릭해 변경 사항을 저장합니다.
예시 데이터셋 설정하기
이 가이드의 핵심 내용에 집중하기 위해 Azure Data Factory에서 소스 데이터셋을
생성하는 구체적인 단계는 다루지 않겠습니다. 샘플 데이터는 원하는 스토리지 서비스(예: Azure Blob Storage, Microsoft SQL
Server 또는 Azure Data Factory에서 지원하는 다른 파일 포맷)에 업로드할 수 있습니다.
ClickHouse로 데이터를 전송하는 Copy Activity 만들기
sensors 테이블로 전송하는 Copy Data 활동을 설정할 수 있습니다.
- Azure Data Factory Studio를 열고 Author 탭으로 이동합니다. Factory Resources 창에서 Pipeline 위에 마우스를 올린 다음 점 3개 아이콘을 클릭하고 New pipeline을 선택합니다.
- Activities 창에서 Move and transform 섹션을 펼친 후 Copy data 활동을 캔버스로 끌어옵니다.
- Source 탭을 선택하고 앞서 만든 원본 데이터셋을 선택합니다.
-
Sink 탭으로 이동하여
sensors테이블용으로 만든 ClickHouse 데이터셋을 선택합니다. Request method를 POST로 설정합니다. HTTP compression type이 None으로 설정되어 있는지 확인합니다.
기본 Batch 크기인 10,000을 유지하거나 더 늘리는 것을 권장합니다. 자세한 내용은
Selecting an Insert Strategy / Batch inserts if synchronous를
참조하십시오.
- 캔버스 상단의 Debug를 클릭하여 파이프라인을 실행합니다. 잠시 후 활동이 큐에 들어가 실행됩니다. 모든 구성이 올바르면 작업은 Success 상태로 완료됩니다.
- 완료되면 Publish all을 클릭하여 파이프라인과 데이터셋 변경 사항을 저장합니다.