파일이나 연결을 통해 대량의 데이터를 불러오는 모범 사례

Python 노트북에서 작업할 때 생성된 코드를 사용하여 파일이나 연결에서 데이터를 불러올 수 있습니다. 파일이나 연결을 통해 대용량 데이터에 접근하기 위해 직접 코드를 작성하고 Flight service API를 사용해야 하는 경우, pandas DataFrames 를 다룰 때 효율성을 높이고 메모리 문제를 방지하기 위해 다음 권장 사항을 참고하시기 바랍니다.

  • write_table 함수를 사용하여 테이블의 pyarrow 데이터를 Db2 로 쓰는 요청 시 ` Flight service `의 `max_chunksize` 매개변수를 지정합니다. Flight 서비스의 각 스케일 구성 수준에서 최대 동시 실행 수에 맞춰 설정된 청크 크기에 대해 3MB 를 초과하지 마십시오. 3MB 보다 큰 청크 크기는 메모리 부족 문제를 일으킬 수 있습니다.
  • 데이터의 더 작은 부분 집합을 불러와 더 작은 ` DataFrames `를 생성하거나, 아예 `pandas. DataFrames `를 사용하지 마십시오. Pandas는 로드되는 데이터의 양보다 훨씬 더 많은 메모리를 사용합니다.
  • Flight service pyarrow 클라이언트를 사용하여 Flight service 에서 데이터를 읽어옵니다. pandas를 사용할 필요는 없습니다.
  • CPU 사용량이 많은 테스트를 여러 번 반복해서 실행할 때는 Python 의 가비지 컬렉션을 수동으로 실행하십시오. CPU 사용률이 한 번도 유휴 상태가 되지 않는다면, 가비지 컬렉션이 정상적으로 실행되어 해제된 메모리를 정리하지 못할 수도 있습니다. 가비지 컬렉션을 주기적으로 실행하도록 설정하면 메모리 사용량을 줄이는 데 도움이 될 수 있습니다.
  • 데이터를 읽은 후에는 해당 데이터가 범위 밖으로 나가도록 하여 가비지 컬렉션이 이를 정리할 수 있게 하십시오.
  • Apache Arrow 의 Flight 클래스와 pandas 간의 유형 차이를 유의하십시오. Apache Arrow 의 각 비행 유형이 pandas의 어떤 유형과 대응되는지 반드시 확인해 두십시오. 자세한 내용은 ‘유형 차이’를 참조하십시오.
  • 요청된 스키마에 pandas가 효율적으로 처리할 수 있는 데이터 유형이 포함되어 있는지 확인하십시오. 예를 들어, 소수형 데이터는 많은 공간을 차지하는 ` Python ` 객체를 생성합니다. 메모리 사용량을 줄이려면 이러한 유형을 단정밀도 부동소수점 형식으로 요청하십시오. SQL 문이나 항공편 요청의 fields 속성에서 형식을 변환할 수 있습니다.
  • 테이블이 너무 커서 단일 DataFrame 에 모두 읽어 들일 수 없는 경우, 데이터를 파티션으로 나누고 한 번에 하나의 파티션씩 처리하십시오.
  • 요청에서 속성을 num_partitions 설정하여 데이터를 분할합니다. 이 요청은 파티션을 개별적으로 읽을 수 있는 최대 num_partitionsFlight service 개의 엔드포인트를 반환합니다.
  • 특정 파티셔닝 크기 내에서 작업해야 할 경우, 문장을 SELECT 사용하여 열 수를 필요한 만큼 줄이십시오.
  • 모든 열이 필요하지만 파티션 크기와 메모리 사용량이 너무 많은 경우, ` Flight service ` 요청의 배치 크기를 변경하고 ` DataFrames `를 증분 방식으로 처리하십시오.