Создание настраиваемых преобразователей типов в PySpark - PullRequest
0 голосов
/ 04 августа 2020

Из pyspark.ml.param я заметил, что toListListFloat существует, и поэтому я следовал его структуре, чтобы создать функцию toListListString:

def toListListString(value):
    """
    Convert a value to a list of list of strings, if possible
    """
    if TypeConverters._can_convert_to_list(value):
        value = TypeConverters.toList(value)
        return [TypeConverters.toListString(v) for v in value]
    raise TypeError("Could not convert %s to list of list of strings" % value)

При попытке вызвать getOrDefault для моего param, я получаю сообщение об ошибке:

Param Param(parent='MeanImputer_420bad667a95e27adfa3', 
name='impute_by_groups_cols', 
doc='A list of lists of column names to impute by group') 
does not belong to MeanImputer_420bad667a95e27adfa3.

Затем я попытался использовать toListListString внутри класса, CustomerTypeConverters который расширяет TypeConverters, но возникает та же ошибка.

проблема возникает, когда Params звонит _shouldOwn

def _shouldOwn(self, param):
        """
        Validates that the input param belongs to this Params instance.
        """
        if not (self.uid == param.parent and self.hasParam(param.name)):
            raise ValueError("Param %r does not belong to %r." % (param, self))

Я не знаю, как это обойти. Любая помощь была бы замечательной, спасибо!

...