Main Content

partition

데이터저장소 파티셔닝

설명

예제

subds = partition(ds,n,index)는 데이터저장소 dsn으로 지정된 파트 개수로 파티셔닝하고 인덱스 index에 대응하는 파티션을 반환합니다.

예제

subds = partition(ds,'Files',index)는 파일을 기준으로 데이터저장소를 파티셔닝하고 Files 속성의 인덱스 index 파일에 대응하는 파티션을 반환합니다.

subds = partition(ds,'Files',filename)은 파일을 기준으로 데이터저장소를 파티셔닝하고 filename으로 지정된 파일에 대응하는 파티션을 반환합니다.

예제

모두 축소

대규모 파일 모음을 저장할 데이터저장소를 만듭니다. 이 예제에서는 샘플 파일 airlinesmall.csv의 복사본 10개를 사용합니다. 테이블 형식 데이터의 누락된 필드를 처리하기 위해 이름-값 쌍 TreatAsMissingMissingValue를 지정합니다.

files = repmat({'airlinesmall.csv'},1,10);
ds = tabularTextDatastore(files,...
                 'TreatAsMissing','NA','MissingValue',0);

데이터저장소를 3개의 파티션으로 분할하고 첫 번째 파티션을 반환합니다. partition 함수는 데이터저장소 ds에 들어 있는 데이터 중에서 약 삼분의 일 분량에 해당하는 첫 번째 부분을 반환합니다.

subds = partition(ds,3,1)
subds = 
  TabularTextDatastore with properties:

                      Files: {
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv';
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv';
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv'
                              ... and 1 more
                             }
               FileEncoding: 'UTF-8'
   AlternateFileSystemRoots: {}
          ReadVariableNames: true
              VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}

  Text Format Properties:
             NumHeaderLines: 0
                  Delimiter: ','
               RowDelimiter: '\r\n'
             TreatAsMissing: 'NA'
               MissingValue: 0

  Advanced Text Format Properties:
            TextscanFormats: {'%f', '%f', '%f' ... and 26 more}
                   TextType: 'char'
         ExponentCharacters: 'eEdD'
               CommentStyle: ''
                 Whitespace: ' \b\t'
    MultipleDelimitersAsOne: false

  Properties that control the table returned by preview, read, readall:
      SelectedVariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
            SelectedFormats: {'%f', '%f', '%f' ... and 26 more}
                   ReadSize: 20000 rows

데이터저장소의 Files 속성은 데이터저장소에 들어 있는 파일의 목록을 포함합니다. 데이터저장소 ds와 분할된 데이터저장소 subdsFiles 속성에서 파일 개수를 확인합니다. 데이터저장소 ds에는 10개의 파일이 들어 있고, 파티션 subds에는 처음 4개의 파일이 들어 있습니다.

length(ds.Files)
ans = 10
length(subds.Files)
ans = 4

샘플 파일 mapredout.mat에서 데이터저장소를 만듭니다. 이 파일은 mapreduce 함수의 출력 파일입니다.

ds = datastore('mapredout.mat');

ds의 디폴트 파티션 개수를 가져옵니다.

n = numpartitions(ds);

데이터저장소를 디폴트 파티션 개수로 파티셔닝하고 첫 번째 파티션에 대응하는 데이터저장소를 반환합니다.

subds = partition(ds,n,1);

subds에서 데이터를 읽습니다.

while hasdata(subds)
	data = read(subds);
end

3개의 이미지 파일이 포함된 데이터저장소를 만듭니다.

ds = imageDatastore({'street1.jpg','peppers.png','corn.tif'})
ds = 

  ImageDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\demos\street1.jpg';
              ' ...\matlab\toolbox\matlab\imagesci\peppers.png';
              ' ...\matlab\toolbox\matlab\imagesci\corn.tif'
              }
    ReadSize: 1
      Labels: {}
     ReadFcn: @readDatastoreImage

파일을 기준으로 데이터저장소를 파티셔닝하고 두 번째 파일에 대응하는 파트를 반환합니다.

subds = partition(ds,'Files',2)
subds = 

  ImageDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\imagesci\peppers.png'
              }
    ReadSize: 1
      Labels: {}
     ReadFcn: @readDatastoreImage

subds에는 하나의 파일이 포함됩니다.

샘플 파일 mapredout.mat에서 데이터저장소를 만듭니다. 이 파일은 mapreduce 함수의 출력 파일입니다.

ds = datastore('mapredout.mat');

병렬 풀의 3개의 워커에 대한 데이터저장소를 3개의 파트로 파티셔닝합니다.

numWorkers = 3;
p = parpool('local',numWorkers);
n = numpartitions(ds,p);

parfor ii=1:n
    subds = partition(ds,n,ii);
    while hasdata(subds)
        data = read(subds);
    end
end

성기게 세분한 파티션을 정교하게 세분한 서브셋과 비교합니다.

비디오 파일 xylophone.mp4에서 모든 프레임을 읽어 들이고 반복을 수행할 ArrayDatastore 객체를 만듭니다. 결과로 생성되는 객체에는 141개의 프레임이 있습니다.

v = VideoReader("xylophone.mp4");
allFrames = read(v);
arrds = arrayDatastore(allFrames,IterationDimension=4,OutputType="cell",ReadSize=4);

인접한 프레임들의 특정 집합을 추출하기 위해 arrds로부터 4개의 성기게 세분한 파티션을 만듭니다. 두 번째 파티션을 추출합니다. 이 파티션에는 35개의 프레임이 있습니다.

partds = partition(arrds,4,2);
imshow(imtile(partds.readall()))

Figure contains an axes object. The axes object contains an object of type image.

정교하게 세분한 서브셋을 사용하여 arrds로부터 지정된 인덱스에 있는 6개의 서로 인접하지 않은 프레임을 추출합니다.

subds = subset(arrds,[67 79 82 69 89 33]);
imshow(imtile(subds.readall()))

Figure contains an axes object. The axes object contains an object of type image.

입력 인수

모두 축소

입력 데이터저장소입니다. datastore 함수를 사용하여 데이터에서 datastore 객체를 만들 수 있습니다.

파티션 개수로, 양의 정수로 지정됩니다.

partition 함수에 지정한 파티션 개수가 데이터저장소에 있는 파일 개수의 약수가 아닐 경우, partition 함수는 나머지 각 관측값을 기존 파티션에 첫 번째 파티션부터 추가합니다.

남은 관측값이 포함된 기존 파티션의 개수는 데이터저장소에 있는 파일 개수를 파티션 개수로 나누어서 얻는 나머지와 같습니다. 예를 들어, 3개 파티션으로 나누려는 datastore 객체에 23개 파일이 있는 경우 partition이 생성하는 처음 두 개 파티션은 8개의 파일을 포함하고 마지막 파티션은 7개 파일을 포함합니다.

예: 3

데이터형: double

인덱스로, 양의 정수로 지정됩니다.

예: 1

데이터형: double

파일 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

filename의 값은 데이터저장소의 Files 속성에 포함된 파일 이름과 정확하게 일치해야 합니다. 파일 이름이 정확하게 일치하는지 확인하려면 ds.Files{N}을 사용하여 filename을 지정하십시오. 여기서 NFiles 속성에 있는 파일의 인덱스입니다. 예를 들어, ds.Files{3}은 데이터저장소 ds의 세 번째 파일을 지정합니다.

예: ds.Files{3}

예: 'file1.csv'

예: '../dir/data/file1.csv'

예: 'hdfs://myserver:7867/data/file1.txt'

데이터형: char

출력 인수

모두 축소

출력 데이터저장소입니다. 출력 데이터저장소는 입력 데이터저장소 ds와 형식이 같습니다.

확장 기능

버전 내역

R2015a에 개발됨

참고 항목

| |

도움말 항목