2013-08-14 1 views
5

아마존 레드 쉬프트에서 S3으로 테이블을 언로드하면 테이블 크기가 아무리 작은 경우에도 테이블이 항상 두 부분으로 나뉩니다. 나는 언로드에 관한 레드 쉬프트 문서를 읽었지만, 때로는 테이블을 쪼개지 않는다고 말하는 답변이 없다. 나는 두 가지 질문이 있습니다amazon redshift에서 s3으로 테이블을 언로드 할 때 하나의 파일 만 생성하도록하려면 어떻게해야합니까?

  • 마다 단 하나의 파일이 생성되는 경우를 본 사람을 했습니까?

  • 강제로 빨간 파일을 단일 파일로 언로드하는 방법이 있습니까?

답변

4

Amazon은 최근 UNLOAD 문에서 PARALLEL을 사용하여 단일 파일로 언로드 할 수 있도록 지원을 추가했습니다. 6.2GB보다 큰 파일은 두 개 이상일 수 있습니다.

0

기본적으로 각 조각은 하나의 파일을 만듭니다 (아래 설명 참조). 가장 가까운 쿼리에 LIMIT을 추가하면 리더 노드가 전체 응답을 처리하게되므로 알려진 해결 방법이 있습니다. 따라서 하나의 파일 만 생성됩니다. LIMIT 절은 부호없는 정수 인수를 취하는 등, 1 기록 -

SELECT * FROM (YOUR_QUERY) LIMIT 2147483647; 

이것은 단지 한 당신의 내면의 쿼리가 2^31보다 적은 반환로 작동합니다.

파일은 어떻게 생성됩니까? http://docs.aws.amazon.com/redshift/latest/dg/t_Unloading_tables.html

Amazon Redshift splits the results of a select statement across a set of files, one or more files per node slice, to simplify parallel reloading of the data.

그래서 지금 우리는 조각 당 적어도 하나 개의 파일이 생성되는 것을 알고있다. 그러나 조각은 무엇입니까? http://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html

The number of slices is equal to the number of processor cores on the node. For example, each XL compute node has two slices, and each 8XL compute node has 16 slices.

조각의 최소 수는 2 것 같다, 그리고 더 많은 노드 또는 더 강력한 노드를 추가 할 때 그것은 더 성장할 것이다.

+0

언로드 절에서 "선택 ... 제한"을 사용하려고했는데 "ERROR : Limit 절이 지원되지 않습니다"라고 말합니다. – ciphor

+0

@ciphor, 그건 새로운 것이거나 12 월 1 일에 변경 될 수 있습니까? 다른 SELECT * FROM() 안에있는 모든 쿼리를 래핑하는 것이 효과가 있는지 테스트했지만 많은 시간을 소비하지는 않았습니다. 단일 파일이 있지만 시간은 얼마나 걸릴지 알고 있습니다. 나는 모른다 ... –

+0

@TomaszTybulewicz LIMIT를 사용하여 리더 노드 만 처리 및 2^31-1 레코드를 수행하도록하는 것에 대한 의견이 있으면 설명서 링크가 있습니까? 나는 문서에서 어디서나 찾을 수없는 것 같습니다. –

1

2014 년 5 월 6 일 UNLOAD 쿼리는 새로운 PARALLEL 옵션을 지원합니다. PARALLEL OFF을 전달하면 데이터가 6.2 기가 미만인 데이터 인 경우 이라는 단일 파일이 출력됩니다 (데이터는 6.2GB 청크로 분할 됨).