Я пытаюсь сделать условный взрыв в Spark Structured Streaming.
Например, мой потоковый фрейм данных выглядит следующим образом (полностью собирая данные здесь).Я хочу разбить массив сотрудников на отдельные строки массивов, когда contingent = 1
.Когда contingent = 0
, мне нужно, чтобы массив был как есть.
|----------------|---------------------|------------------|
| Dept ID | Employees | Contingent |
|----------------|---------------------|------------------|
| 1 | ["John", "Jane"] | 1 |
|----------------|---------------------|------------------|
| 4 | ["Amy", "James"] | 0 |
|----------------|---------------------|------------------|
| 2 | ["David"] | 1 |
|----------------|---------------------|------------------|
Итак, мой вывод должен выглядеть так (мне не нужно отображать столбец contingent
:
|----------------|---------------------|
| Dept ID | Employees |
|----------------|---------------------|
| 1 | ["John"] |
|----------------|---------------------|
| 1 | ["Jane"] |
|----------------|---------------------|
| 4 | ["Amy", "James"] |
|----------------|---------------------|
| 2 | ["David"] |
|----------------|---------------------|
Есть несколько проблем, с которыми я сейчас сталкиваюсь:
- Условное взрывание массивов
- взрыв массивов в массивы (в данном случае вместо строк)
В Hive была концепция UDTF (определяемые пользователем табличные функции), которая позволяла бы мне это делать. Интересно, есть ли что-нибудь сопоставимое с этим?