mr

Parent Previous Next


语法


mr(ds, mapFunc, [reduceFunc], [finalFunc], [parallel=true])


参数







详情


Map-Reduce函数是DolphinDB通用分布式计算框架的核心功能。


例子


以下是分布式线性回归的示例。 X是自变量的矩阵,y是因变量。 Xy存储在多个数据源中。 为了估计最小二乘参数,我们需要计算XTXXTy。 我们可以从每个数据源计算(XTXXTy)的元组,然后将所有数据源的结果相加,以获得整个数据集的XTXXTy



def myOLSMap(table, yColName, xColNames, intercept){

 if(intercept)

    x = matrix(take(1.0, table.rows()), table[xColNames])

 else

    x = matrix(table[xColNames])

 xt = x.transpose();

 return xt.dot(x), xt.dot(table[yColName])

}


def myOLSFinal(result){

  xtx = result[0]

  xty = result[1]

  return xtx.inv().dot(xty)[0]

}


def myOLSEx(ds, yColName, xColNames, intercept){

  return mr(ds, myOLSMap{, yColName, xColName, intercept}, +, myOLSFinal)

}



在上面的例子中,我们定义了map函数和final函数。 实践中,我们也可为数据源定义转换函数。 这些功能仅需在本地实例中定义,用户不需要编译它们或将其部署到远程实例。DolphinDB的分布式计算框架可以为最终用户快速处理这些复杂的问题。


作为经常使用的分析工具,分布式最小二乘线性回归已经在我们的核心库中实现。 内置版本(olsEx)提供更多功能。