У меня есть кластер с искрой 2.1 и процесс, который в конце записывает в файл PipelineModel
, который содержит StringIndexerModel
.Я могу локально (с искрой 2.3) загрузить трубопровод и проверить StringIndexerModel
.То, что кажется очень странным, - это то, что метод и поля отличаются в двух версиях, даже если они читают одни и те же файлы.В частности, в spark 2.1 поле inputCol
, по-видимому, отсутствует, даже если оно явно необходимо для работы StringIndexer.
Это то, что я получаю.
Spark 2.1:
pip1 = PipelineModel.load("somepath")
si = pip1.stages[0]
si
#StringIndexer_494eb1f86ababc8540e2
si.inputCol
#Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
#AttributeError: 'StringIndexerModel' object has no attribute 'inputCol'
Spark 2.3
pip1 = PipelineModel.load("somepath")
si = pip1.stages[0]
si
#StringIndexer_494eb1f86ababc8540e2
si.inputCol
#Param(parent='StringIndexer_494eb1f86ababc8540e2', name='inputCol', doc='input column name')
Я понимаю, что методы и поля могут меняться от одной версии к другой, но inputCol
должен быть где-то в объекте, так как это необходимо сделатьfit
или transform
работа.Есть ли способ извлечь inputCol
в spark 2.1 с помощью PySpark?