Python용 Snowflake 커넥터로 결과를 가져오는 워크로드 분산하기¶
분산 환경을 사용하여 워크로드를 병렬화하는 경우 Python용 Snowflake 커넥터를 사용하여 결과 가져오기 및 처리 작업을 분산할 수 있습니다.
소개¶
Cursor 오브젝트를 사용하여 쿼리를 실행한 후, 결과 배치를 사용하여 결과를 가져오는 작업을 분산할 수 있습니다. 결과 배치 는 결과의 하위 세트를 검색하는 함수를 캡슐화합니다. 다양한 작업자를 할당하여 다양한 결과 배치를 사용해 결과를 병렬로 가져오고 처리할 수 있습니다.
결과 배치 목록 검색하기¶
쿼리를 실행한 후 다음 형식 중 하나로 결과를 검색할 수 있습니다.
ResultBatch 오브젝트.
이렇게 하려면 Cursor 오브젝트에서
get_result_batches()메서드를 호출하십시오. 이 메서드는 처리를 위해 다른 작업자에 할당할 수 있는ResultBatch오브젝트의 목록을 반환합니다. 예를 들면 다음과 같습니다.PyArrow 테이블.
자세한 내용은 PyArrow 테이블 섹션을 참조하십시오.
다음 메서드를 사용하여 결과 배치를 PyArrow 테이블로 검색할 수 있습니다.
fetch_arrow_all(): 모든 결과가 포함된 PyArrow 테이블을 반환하려면 이 메서드를 호출하십시오.fetch_arrow_batches(): 각 결과 배치의 PyArrow 테이블을 반환하는 데 사용할 수 있는 반복기를 반환하려면 이 메서드를 호출하십시오.
예:
pandas DataFrame 오브젝트.
Python용 Snowflake 커넥터의 pandas 호환 버전을 설치한 경우, 다음 메서드를 사용하여 결과 배치를 pandas DataFrame 오브젝트로 검색할 수 있습니다.
fetch_pandas_all(): 모든 결과가 포함된 pandas DataFrame을 반환하려면 이 메서드를 호출하십시오.fetch_pandas_batches(): 각 결과 배치의 pandas DataFrame을 반환하는 데 사용할 수 있는 반복기를 반환하려면 이 메서드를 호출하십시오.
예:
결과 배치 직렬화하기¶
결과 배치를 다른 작업자나 노드로 이동하기 위해 결과 배치를 직렬화 및 역직렬화할 수 있습니다. 예를 들면 다음과 같습니다.
결과 배치로 작업하기¶
다음 섹션에서는 ResultBatch 오브젝트로 작업하는 방법을 설명합니다.
결과 배치의 행에 대해 반복하기¶
ResultBatch 오브젝트를 사용하여 해당 배치에 속한 행에 대해 반복할 수 있습니다. 예를 들면 다음과 같습니다.
ResultBatch 오브젝트의 반복기를 만들 때 이 오브젝트는 해당 배치에 대한 행의 하위 세트를 가져와 변환합니다.
결과 배치의 행 구체화하기¶
해당 ResultBatch 오브젝트를 list() 함수에 전달하여 결과 배치의 행 하위 세트를 구체화합니다. 예를 들면 다음과 같습니다.
결과 배치의 행 수와 크기 가져오기¶
결과 배치의 행 수와 데이터 크기를 결정해야 하는 경우 ResultBatch 오브젝트의 행 수, 압축_크기, 비압축_크기 속성을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
결과 배치를 반복하기 전에 이러한 속성을 사용할 수 있습니다. 이러한 속성의 값을 가져오려고 배치에 대한 행의 하위 세트를 가져올 필요는 없습니다.
Arrow 결과 배치를 PyArrow 테이블 또는 pandas DataFrame로 변환하기¶
ArrowResultBatch 를 PyArrow 테이블 또는 pandas DataFrame으로 변환하려면 다음 메서드를 사용하십시오.
to_pandas(): Python용 Snowflake 커넥터의 pandas 호환 버전을 설치한 경우,ArrowResultBatch에 행이 포함된 pandas DataFrame을 반환하려면 이 메서드를 호출하십시오.to_arrow():ResultBatch에 행이 포함된 PyArrow 테이블을 반환하려면 이 메서드를 호출하십시오.
예: