直接调用pyspark
pyspark 中实现mllib 最关键的几行代码如下:
def callJavaFunc(sc, func, *args):
""" Call Java Function """
args = [_py2java(sc, a) for a in args]
return _java2py(sc, func(*args))
def callMLlibFunc(name, *args):
""" Call API in PythonMLLibAPI """
sc = SparkContext.getOrCreate()
api = getattr(sc._jvm.PythonMLLibAPI(), name)
return callJavaFunc(sc, api, *args)
发现了没,pyspark 其实就是在调scala 写的mllib,所以你问spark mllib 的机器学习包推荐算法如何在python 实现,不如问,spark mllib 的机器学习包是如何在pyspark 中被调用的的。
2. 注意你的版本和开发语言,不同版本api差很多。说一个我遇到的坑
当时将基于pyspark2.x 的LDA程序改写为 基于spark 1.6.3 scala 版本。然后发现各种api 不一致,或者压根就没有。比如pyspark 1.6.3 的ml中压根就没有lda 的api