如何生成从Map函数返回的元素计数?

时间:2019-06-25 20:26:59

标签: couchdb

我有地图功能

export BASE_DIR="/local/file/path/where/jar/is/available"

spark-submit \
    --class ${class} \
    --deploy-mode cluster \
    --master yarn \
...
...
...
    --name ${APPLICATION_NAME} \
    ${BASE_DIR}/*.jar

以上返回以下内容:

function (doc) {
    for(var n =0; n<doc.Observations.length; n++){
        emit(doc.Scenario, doc.Observations[n].Label);
    } 
}

我正在设计一个reduce函数,该函数将返回上述值的计数,类似于:

{"key":"Splunk","value":"Organized Alerts"},
{"key":"Splunk","value":"Organized Alerts"},
{"key":"Splunk","value":"Organized Alerts"},
{"key":"Splunk","value":"Generate Incident Report"},
{"key":"Splunk","value":"Ingest Data"}

我的地图函数必须在“场景”字段中进行过滤,因此为什么我将其作为地图函数中的发射键。

我曾尝试使用许多内置的reduce函数,但最终却得到了行数,或者由于可用的函数不适用而一无所获。

我只需要访问显示在值字段中的每个元素的计数。同样,这里显示的值具有代表性,在值字段中可以找到数百种不同类型的值,以说明其价值。

我非常感谢您的帮助!

以下是示例输入:

Organized Alerts: 3
Generate Incident Report: 1
Ingest Data: 1

1 个答案:

答案 0 :(得分:1)

您可以通过“值”作为键设置映射,并将增量与该键关联以确保计数保持不变。然后,您可以打印地图,该地图应该看起来像您的要求。