addmulti
KeyValueStore에 여러 개의 키-값 쌍 추가
설명
예제
map 함수와 reduce 함수에 add
와 addmulti
를 사용하여 중간과 최종 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'} {123523×1 double}
{'DepDelay'} {123523×1 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 함수에서add
나addmulti
를 사용하여 중간 키-값 쌍을 추가하려면 이와 동일한 변수 이름을 사용하십시오.reduce 함수에서 최종
KeyValueStore
객체의 이름은 reduce 함수myReducer(intermKey, intermValIter, outKVStore)
에 대한 세 번째 입력 인수입니다. reduce 함수에서add
나addmulti
를 사용하여 최종 키-값 쌍을 추가하려면 이와 동일한 변수 이름을 사용하십시오.
자세한 내용은 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 객체일 수 있습니다.
mapreduce
의 OutputType
인수는 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에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)