Borys Biletskyy created SPARK-29428:
---------------------------------------

             Summary: Can't persist/set None-valued param 
                 Key: SPARK-29428
                 URL: https://issues.apache.org/jira/browse/SPARK-29428
             Project: Spark
          Issue Type: Bug
          Components: ML, PySpark
    Affects Versions: 2.3.2
            Reporter: Borys Biletskyy


{code:java}
import pytest
from pyspark import keyword_only
from pyspark.ml import Model
from pyspark.sql import DataFrame
from pyspark.ml.util import DefaultParamsReadable, DefaultParamsWritable
from pyspark.ml.param.shared import HasInputCol
from pyspark.sql.functions import *


class NoneParamTester(Model,
                      HasInputCol,
                      DefaultParamsReadable,
                      DefaultParamsWritable
                      ):
    @keyword_only
    def __init__(self, inputCol: str = None):
        super(NoneParamTester, self).__init__()
        kwargs = self._input_kwargs
        self.setParams(**kwargs)

    @keyword_only
    def setParams(self, inputCol: str = None):
        kwargs = self._input_kwargs
        self._set(**kwargs)
        return self

    def _transform(self, data: DataFrame) -> DataFrame:
        return data


class TestHasInputColParam(object):
    def test_persist_none(self, spark, temp_dir):
        path = temp_dir + '/test_model'
        model = NoneParamTester(inputCol=None)
        assert model.isDefined(model.inputCol)
        assert model.isSet(model.inputCol)
        assert model.getInputCol() is None
        model.write().overwrite().save(path)
        NoneParamTester.load(path)  # TypeError: Could not convert <class 
'NoneType'> to string type

    def test_set_none(self, spark):
        model = NoneParamTester(inputCol=None)
        assert model.isDefined(model.inputCol)
        assert model.isSet(model.inputCol)
        assert model.getInputCol() is None
        model.set(model.inputCol, None)  # TypeError: Could not convert <class 
'NoneType'> to string type
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to