如何访问广播变量的内容

时间:2015-10-23 18:09:24

标签: python json apache-spark pyspark

我需要在使用广播值的函数中进行一些计算

json_data = text.map(lambda x: json.loads(x))
 ....
# code to calculate average and generate tuple with json_data['jsontag'] and avgvalue
some rdd filtsubavg with tuples of (jsontag, avgvalue)
V = sc.broadcast(filtsubavg.collect())
com = json_data.map(lambda l:l['jsontag'],l) 
res = com.map(lambda (cmtag,cm): get_val(cmtag,cm,V))

如果需要除以平均值,我如何在我的函数中访问V.

def get_val(jsontag,cm,v):
    r1 = cm[jsontag]
    r2 = cm[value]/(get corresponding value for jsontag in v)
    return (r1,r2)

1 个答案:

答案 0 :(得分:2)

要访问广播变量的内容,您可以使用其value属性:

V.value

如果你想将它用作查找表,那么将它作为map(字典)收集是有意义的:

V = sc.broadcast(filtsubavg.collectAsMap())

然后你可以简单地使用:

cm[value] / V.value.get(v)