urlCluster
urlCluster
지정된 클러스터의 여러 노드에서 URL의 파일을 병렬로 처리할 수 있게 해주는 테이블 함수예요. 초기자(initiator)에서 클러스터의 모든 노드에 연결을 만들고, URL 파일 경로의 별표(asterisk)를 해제하며 각 파일을 동적으로 배포합니다. 작업자 노드에서는 초기자에게 처리할 다음 작업을 물어보고 처리해요. 모든 작업이 끝날 때까지 반복됩니다.
출처: 문서
본문
구문(Syntax)
urlCluster(cluster_name, URL, format, structure)
인자(Arguments)
| 인자 (Argument) | 설명 (Description) |
|---|---|
cluster_name |
원격 및 로컬 서버의 주소 집합과 연결 매개변수를 만드는 데 사용되는 클러스터의 이름. |
URL |
GET 요청을 받을 수 있는 HTTP 또는 HTTPS 서버 주소. 타입: String. |
format |
데이터의 형식(Format). 타입: String. |
structure |
'UserID UInt64, Name String' 형식의 테이블 구조. 컬럼 이름과 타입을 결정해요. 타입: String. |
반환 값(Returned value)
지정된 형식과 구조를 가지며 정의된 URL의 데이터를 담은 테이블.
예시(Examples)
CSV 형식으로 응답하는 HTTP 서버에서 String 및 UInt32 타입 컬럼을 포함한 테이블의 처음 3줄을 가져옵니다.
- 표준 Python 3 도구로 기본 HTTP 서버를 만들고 시작하세요:
from http.server import BaseHTTPRequestHandler, HTTPServer
class CSVHTTPServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/csv')
self.end_headers()
self.wfile.write(bytes('Hello,1\nWorld,2\n', "utf-8"))
if __name__ == "__main__":
server_address = ('127.0.0.1', 12345)
HTTPServer(server_address, CSVHTTPServer).serve_forever()
SELECT * FROM urlCluster('cluster_simple','http://127.0.0.1:12345', CSV, 'column1 String, column2 UInt32')
URL 안의 글로브 (Globs in URL)
{ } 안의 패턴은 샤드 집합을 만들거나 장애 조치(failover) 주소를 지정하는 데 사용돼요. 지원되는 패턴 유형과 예시는 remote 함수 설명을 참고하세요.
패턴 안의 | 문자는 장애 조치 주소 지정에 사용됩니다. 패턴에 나열된 순서대로 반복됩니다. 생성되는 주소의 개수는 glob_expansion_max_elements 설정으로 제한돼요.