Мне нужны вероятности, сгенерированные из XGboost / scala, извлеченные из моего фрейма предсказаний.Я новичок в spark / scala, и я заметил, что информационный фрейм выходит интерактивным и имеет столбец «вероятность», который имеет тип «udf» и содержит массив вероятностей.Мне просто нужно извлечь первую вероятность, которая является вероятностью класса 0 и моего другого столбца 'ID'.
Это экземпляр одной строки столбца «вероятность», когда он не свернут:
массив 0: 1 1: 2 2: [] 3: 0: 0.9405021741986275 1: 0,054949782580137253
при свертывании:
[1,2, [], [0.9405021741986275,0.05949782580137253]]
и экземпляр столбца идентификатора: 57693755
Я попытался создатьtempview фрейма данных Predictions с помощью scala, а затем с помощью spark.sql для запроса «ID» и подстроки «вероятности» в python.Следующим образом:
val predictions = model.transform(prod)
predictions.createOrReplaceTempView("predictions")
```python
final_results=spark.sql("select ID, SUBSTRING(cast(probability as string),2,9) as prob from predictions")
but the issue is when I try to save to a table, spark stages fail:
```python
final_results.write.saveAsTable('final_predictions_table')
```md
This works and gets me the output I need all the way until I try to save results as table. That's when spark stages start failing and so I believe this is a very suboptimal way of doing this. The output I want is basically:
'ID' 'Probability'
57693755 0.94050
Can anyone please help me out? I am a spark/scala newbie and am on DataBricks.
Thanks in advance!