ConsoleBuffer'对象没有属性' isatty'

时间:2017-11-02 06:51:18

标签: apache-spark deep-learning databricks

我在databricks社区版上使用sparkdl进行图像分类。 我添加了所有的库。 我使用图像数据创建了数据框。

from pyspark.ml.classification import LogisticRegression
from pyspark.ml import Pipeline
from sparkdl import DeepImageFeaturizer 

featurizer = DeepImageFeaturizer(inputCol="image", outputCol="features", modelName="InceptionV3")
lr = LogisticRegression(maxIter=20, regParam=0.05, elasticNetParam=0.3, labelCol="label")
p = Pipeline(stages=[featurizer, lr])

p_model = p.fit(train_df)   




    AttributeError                            Traceback (most recent call last)
<command-2468766328144961> in <module>()
      7 p = Pipeline(stages=[featurizer, lr])
      8 
----> 9 p_model = p.fit(train_df)

/databricks/spark/python/pyspark/ml/base.py in fit(self, dataset, params)
     62                 return self.copy(params)._fit(dataset)
     63             else:
---> 64                 return self._fit(dataset)
     65         else:
     66             raise ValueError("Params must be either a param map or a list/tuple of param maps, "

/databricks/spark/python/pyspark/ml/pipeline.py in _fit(self, dataset)
    104                 if isinstance(stage, Transformer):
    105                     transformers.append(stage)
--> 106                     dataset = stage.transform(dataset)
    107                 else:  # must be an Estimator
    108                     model = stage.fit(dataset)

1 个答案:

答案 0 :(得分:2)

从你问题的标题来看,听起来你在Databricks Python笔记本中遇到了AttributeError: 'ConsoleBuffer' object has no attribute 'isatty'错误。

如果您使用Databricks Runtime 3.3或更高版本,则应修复此错误。

在早期的Databricks Runtime版本中,您应该能够通过在Python笔记本的开头运行以下代码片段来对monkeypatching sys.stdout解决此问题:

import sys

sys.stdout.isatty = lambda: False
sys.stdout.encoding = sys.getdefaultencoding()

Databricks的Python REPL覆盖sys.stdout以使用我们自己的ConsoleBuffer类,在Databricks Runtime 3.3之前,此类未实现isattyencoding方法。

来源:我是Databricks的一名员工,负责这个bug修复。