为什么 StringIndexer 没有 outputCols?

Why does StringIndexer has no outputCols?

我正在使用 Apache Zeppelin。我的 anaconda 版本是 conda 4.8.4.,我的 spark 版本是:

%spark2.pyspark
spark.version
u'2.3.1.3.0.1.0-187'

当我 运行 我的代码时,它抛出以下错误:

Exception AttributeError: "'StringIndexer' object has no attribute '_java_obj'" in <object repr() failed> ignored
Fail to execute line 4: indexerFeatures = StringIndexer(inputCols=catColumns, outputCols=catIndexedColumns, handleInvalid="keep")
Traceback (most recent call last):
  File "/tmp/zeppelin_pyspark-66369397479549554.py", line 375, in <module>
    exec(code, _zcUserQueryNameSpace)
  File "<stdin>", line 4, in <module>
  File "/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/__init__.py", line 105, in wrapper
    return func(self, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'outputCols'

我 运行 在 Databricks 中使用相同的代码,一切正常。我还使用 help() 函数检查了 StringIndexer 的导入,它没有包含 outputCols 参数。

应该是outputCol,不是outputCols.

spark 2.3.1可以参考:https://spark.apache.org/docs/2.3.1/api/python/pyspark.ml.html#pyspark.ml.feature.StringIndexer

class pyspark.ml.feature.StringIndexer(inputCol=None, outputCol=None, handleInvalid='error', stringOrderType='frequencyDesc')