Pyspark - обработка исключений и повышение RuntimeError в фрейме данных pyspark

У меня есть фрейм данных, в котором я пытаюсь создать новый столбец на основе значений существующего столбца:

dfg = dfg.withColumn("min_time",
    F.when(dfg['list'].isin(["A","B"]),dfg['b_time'])
     .when(dfg['list']=="C",dfg['b_time'] +2)
     .when(dfg['list']=="D",F.when(dfg['b_time']==0,lit(10)).otherwise(2*dfg['b_time'])).when(dfg['list'].isin(['E','F']),dfg['b_time']).when(dfg['list'].isin(["A","B","C","D",'E','F'])==False,lit('unknown category'))
     .otherwise('unknown'))

Я хочу добиться в последнем условии .when, если значения столбца dfg ['list'] не принадлежат ни одному из элементов в списке = ["A", "B", "C", "D" , 'E', 'F'], я хочу вызвать ошибку выполнения с сообщением. Не уверен, как это сделать в pyspark. Также, если я создаю столбцы на основе условных операторов, то есть .when и .otherwise, как использовать блоки try except.

Я использую pyspark 1.6. Любая помощь очень ценится.


person Mia21    schedule 31.01.2018    source источник


Ответы (1)


Это не выход. Поток управления построением противоречит как модели SQL, так и функциональной модели, используемой в Spark.

Если вы действительно хотите тормозить, проверьте, есть ли какой-нибудь "неизвестный" выход изящно:

if not dfg.where(dfg["min_time"] == "unknown").take(1):
    ... # Add your logic here
person user9296664    schedule 31.01.2018