DataBricks PySpark错误时,试图适应CrossValidator对象



首先,我是DataBricks和PySpark的新手,所以我很抱歉,如果这是一个简单的解决方案,我没有看到。我的集群是DataBricks运行时9.1 LTS (Spark 3.1.2, Scala 2.12)。

我正在做一个介绍性的NLP问题,做餐馆评论情感分析。我使用各种注释和逻辑回归模型构建了我的管道。我正在尝试实现CrossValidator对象来调整我的参数。

当我尝试使用CrossValidator时,我得到以下警告:

/databricks/spark/python/pyspark/ml/util.py:92: UserWarning: CrossValidator_0c70efdbf04c 
fit call failed but some spark jobs may still running for unfinished trials. 
To address this issue, you should enable pyspark pinned thread mode.

和以下错误可以追溯到我的fit()调用:

IllegalArgumentException: requirement failed: Tensorflow model has not been initialized

CrossValidator的代码如下:

pipe_added = Pipeline().setStages([pipe_sw_cstm, lr])
cv = CrossValidator(estimator = pipe_added,
estimatorParamMaps = lr_params,
evaluator = BinaryClassificationEvaluator(),
numFolds = 3,
seed = 31415
)
cvModel = cv.fit(train)

这些都应该在一个循环中运行,并在不同的初始管道上迭代,这些管道与所需的模型结合到变量pipe_added中。这个新的复合管道连同所需模型的参数列表一起被发送到CrossValidator。我已经去掉了这里的大部分迭代代码,以支持用于调试的静态版本。

当不使用CrossValidator对象时,逻辑回归模型正确地拟合数据

显而易见的第一步是启用固定线程模式,我尝试在集群环境变量 中设置以下内容
PYSPARK_PIN_THREAD=true

,但现在我得到一个新的错误时,运行我的代码,仍然失败的fit()调用:

AttributeError: 'GatewayClient' object has no attribute 'thread_connection'

因此,我似乎应该保留固定线程模式。

我试过导入tensorflow,以及mlflow。张sorflow,没有成功。任何支持都将是非常感激的,调试库之间的依赖关系已经是我的一个弱点,更不用说在一个使用新的主库的新平台上了。

编辑1:使用TrainValidationSplit会引发相同的警告和错误。

嗨,我认为你应该在BinaryClassificationEvaluator中输入参数labelcol= lr.getLabelCol()或者你使用的标签列的名称

最新更新