Main Content

add

KeyValueStore에 단일 키-값 쌍 추가

설명

예제

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

예제

모두 축소

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

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

        8   
        8   
       21   
       13   
        4   
       59   
        3   
       11   

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 100%
readall(outds)
ans=1×2 table
        Key               Value      
    ____________    _________________

    {'ArrDelay'}    {123523x1 double}

로컬 함수(Local Function)

function myMapper(data,info,intermKV)
    add(intermKV, 'ArrDelay',data.ArrDelay);
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형으로 지정됩니다.

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

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

예: add(intermKVStore,'Sum',sum(X))는 map 함수의 중간 KeyValueStore 객체(intermKVStore로 명명)에 키-값 쌍을 추가합니다.

예: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)])는 reduce 함수의 최종 KeyValueStore 객체(outKVStore로 명명)에 키-값 쌍을 추가합니다.

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

값으로, 임의의 MATLAB 객체로 지정됩니다. 여기에는 모든 유효한 MATLAB 데이터형이 포함됩니다.

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

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

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

참고

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

예: add(intermKVStore,'Sum',sum(X))는 키와 쌍을 이룰 단일 스칼라 값을 지정합니다.

예: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)])는 숫자형 배열을 키와 쌍을 이룰 값으로 지정합니다.

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

버전 내역

R2014b에 개발됨