Main Content

addmulti

KeyValueStore에 여러 개의 키-값 쌍 추가

설명

예제

addmulti(KVStore,keys,values)KVStore에 여러 개의 키-값 쌍을 추가합니다. KVStore는 mapreduce 실행 중에 생성되는 KeyValueStore입니다. mapreduce와 함께 사용하도록 작성된 map 함수나 reduce 함수에 addmulti를 사용하여 중간 키-값 쌍이나 최종 키-값 쌍 정보를 저장할 수 있습니다.

예제

모두 축소

map 함수와 reduce 함수에 addaddmulti를 사용하여 중간과 최종 KeyValueStore로 데이터를 전달합니다. 이 예제에서는 입력값을 바로 출력값으로 전달하는 항등 함수 map과 reduce를 사용합니다. map 함수와 reduce 함수는 예제 끝에 로컬 함수로 나와 있습니다.

inds = tabularTextDatastore('airlinesmall.csv','SelectedVariableNames',...
    {'ArrDelay','DepDelay'},'TreatAsMissing','NA');
preview(inds)
ans=8×2 table
    ArrDelay    DepDelay
    ________    ________

        8          12   
        8           1   
       21          20   
       13          12   
        4          -1   
       59          63   
        3          -2   
       11          -1   

outds = mapreduce(inds,@myMapper,@myReducer,mapreducer(0));
********************************
*      MAPREDUCE PROGRESS      *
********************************
Map   0% Reduce   0%
Map  16% Reduce   0%
Map  32% Reduce   0%
Map  48% Reduce   0%
Map  65% Reduce   0%
Map  81% Reduce   0%
Map  97% Reduce   0%
Map 100% Reduce   0%
Map 100% Reduce  50%
Map 100% Reduce 100%
readall(outds)
ans=2×2 table
        Key               Value      
    ____________    _________________

    {'ArrDelay'}    {123523x1 double}
    {'DepDelay'}    {123523x1 double}

로컬 함수(Local Function)

function myMapper(data,info,intermKV)
    addmulti(intermKV,{'ArrDelay' 'DepDelay'},{data.ArrDelay data.DepDelay});
end

function myReducer(key,intermValIter,outKV)
    data = getnext(intermValIter);
    while hasnext(intermValIter)
        data = [data; getnext(intermValIter)];
    end
    add(outKV,key,data);
end

입력 인수

모두 축소

키-값 쌍 저장공간 객체로, KeyValueStore 객체로 지정됩니다. mapreduce 함수는 실행 중에 자동으로 KeyValueStore 객체를 생성합니다.

  • map 함수에서 중간 KeyValueStore 객체의 이름은 map 함수 myMapper(data, info, intermKVStore)에 대한 세 번째 입력 인수입니다. map 함수에서 addaddmulti를 사용하여 중간 키-값 쌍을 추가하려면 이와 동일한 변수 이름을 사용하십시오.

  • reduce 함수에서 최종 KeyValueStore 객체의 이름은 reduce 함수 myReducer(intermKey, intermValIter, outKVStore)에 대한 세 번째 입력 인수입니다. reduce 함수에서 addaddmulti를 사용하여 최종 키-값 쌍을 추가하려면 이와 동일한 변수 이름을 사용하십시오.

자세한 내용은 KeyValueStore를 참조하십시오.

키로, 숫자형 스칼라, 숫자형 벡터, 문자형 벡터, string형 배열, 문자형 벡터로 구성된 셀형 벡터 또는 숫자형 스칼라로 구성된 셀형 벡터로 지정됩니다. 키가 숫자형 벡터, 셀형 벡터 또는 string형 배열이면 각 항목은 다른 키를 지정합니다.

map 함수에 의해 추가된 모든 키는 동일한 클래스를 가져야 합니다. reduce 함수에 의해 추가된 키도 동일한 클래스를 가져야 하지만 이 클래스는 map 함수에 의해 추가된 키의 클래스와 다를 수 있습니다.

숫자형 키는 NaN, 복소수형, 논리형, 희소 형식일 수 없습니다.

예: addmulti(intermKVStore,{'Sum'; 'Count'; 'Variance'},{sum(X); numel(X); var(X)})는 키를 지정하는 셀형 벡터를 사용하여 중간 KeyValueStore 객체(intermKVStore로 명명)에 세 개의 키-값 쌍을 추가합니다.

예: addmulti(intermKVStore,[1 2 3 4],{sum(X); mean(X); max(X); min(X)})는 키를 지정하는 숫자형 벡터를 사용하여 중간 KeyValueStore 객체에 네 개의 키-값 쌍을 추가합니다.

예: addmulti(outKVStore,'Stats',{[mean(X) max(X) min(X) var(X) std(X)]})는 문자형 벡터를 키로 사용하여 최종 KeyValueStore 객체(outKVStore로 명명)에 단일 키-값 쌍을 추가합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

값으로, 셀형 배열로 지정됩니다. 셀형 배열의 각 항목은 키-값 쌍의 값을 지정하므로, numel(values)는 키의 개수와 같아야 합니다. 셀형 배열의 항목은 모든 유효한 MATLAB® 데이터형을 포함하는 모든 MATLAB 객체일 수 있습니다.

mapreduceOutputType 인수는 reduce 함수가 추가할 수 있는 값의 유형에 영향을 미칩니다.

  • OutputType'Binary'(디폴트)인 경우 reduce 함수는 어떤 MATLAB 객체든 추가할 수 있습니다.

  • OutputType'TabularText'인 경우 reduce 함수가 추가하는 값은 add 함수를 사용할 때 숫자형 스칼라, 문자형 벡터 또는 string형 스칼라일 수 있습니다. addmulti 함수를 사용하여 숫자형 벡터, 문자형 벡터로 구성된 셀형 벡터, 숫자형 스칼라로 구성된 셀형 벡터 또는 string형 배열을 포함하는 여러 값을 추가할 수도 있습니다. 두 경우 모두 숫자형 값은 NaN, 복소수형, 논리형, 희소 형식일 수 없습니다.

참고

다른 제품에서 mapreduce를 사용할 경우 위의 키-값 쌍 요구 사항이 다를 수 있습니다. 제품별 키-값 쌍 요구 사항을 알아보려면 해당 제품의 설명서를 참조하십시오.

예: addmulti(intermKVStore,{'Sum'; 'Count'; 'Variance'},{sum(X); numel(X); var(X)})intermKVStore라는 중간 KeyValueStore 객체에 세 개의 키-값 쌍을 추가합니다.

예: addmulti(intermKVStore,[1 2 3 4],{sum(X); mean(X); max(X); min(X)})는 셀형 벡터를 사용하여 중간 KeyValueStore 객체에 네 개의 키-값 쌍을 추가합니다.

예: addmulti(outKVStore,'Stats',{[mean(X) max(X) min(X) var(X) std(X)]})outKVStore라는 최종 KeyValueStore 객체에 단일 키-값 쌍을 추가합니다.

예: addmulti(outKVStore,{'Distance' 'Time'},{table.Distance table.Time})은 값을 지정하는 테이블의 변수를 사용하여 두 개의 키-값 쌍을 추가합니다.

  • add를 루프에서 사용하지 마십시오. 이 경우 mapreduce 실행 시간에 부정적인 영향을 미칠 수 있습니다. 대신, 셀형 배열을 사용하여 여러 값을 수집하고(가능한 경우 벡터화된 연산 사용) addmulti를 한 번 호출하십시오.

버전 내역

R2014b에 개발됨

참고 항목

|

도움말 항목