在Spark模块pyspark.mllib.classification中并行化方法的正确用法是什么

时间:2016-12-14 13:42:19

标签: apache-spark-mllib

  1. 从Notebook UI运行Databricks Community Edition spark群集
  2. 在尝试训练NaiveBayes获取微小数据样本时遇到此错误 - TypeError:必须调用未绑定方法parallelize() SparkContext实例作为第一个参数(获取列表实例)
  3. 代码:

    from pyspark.mllib.classification import LabeledPoint, NaiveBayes
    from pyspark import SparkContext as sc
    data = [
    LabeledPoint(0.0, [0.0, 0.0]),
    LabeledPoint(0.0, [0.0, 1.0]),
    LabeledPoint(1.0, [1.0, 0.0])]
    model = NaiveBayes.train(sc.parallelize(data))
    model.predict(array([0.0, 1.0]))
    model.predict(array([1.0, 0.0]))
    model.predict(sc.parallelize([[1.0, 0.0]])).collect()
    

1 个答案:

答案 0 :(得分:1)

这里的问题是您的示例第二行的导入:

from pyspark import SparkContext as sc

这会使用SparkContext类覆盖内置的sc实例(存储在SparkContext中),导致后来的sc.parallelize()调用失败。

在Databricks中,您不需要自己创建SparkContext;它在Databricks笔记本中自动预定义为sc。有关Databricks中预定义变量的更完整列表,请参阅https://docs.databricks.com/user-guide/getting-started.html#predefined-variables