Używam Spark SQL (wspominam, że jest on w Sparku, jeśli ma wpływ na składnię SQL - nie jestem dostatecznie znany, aby się upewnić) i mam tabela, którą próbuję zmienić strukturę, ale utknąłem próbując transponować wiele kolumn w tym samym czasie.Rozbij (transponuj?) Wiele kolumn w tabeli Spark SQL
Zasadniczo mam dane, które wygląda następująco:
userId someString varA varB
1 "example1" [0,2,5] [1,2,9]
2 "example2" [1,20,5] [9,null,6]
i chciałbym eksplodować zarówno Vara i varB jednocześnie (długość będzie zawsze zgodny) - tak, że ostateczne wyjście wygląda następująco:
userId someString varA varB
1 "example1" 0 1
1 "example1" 2 2
1 "example1" 5 9
2 "example2" 1 9
2 "example2" 20 null
2 "example2" 5 6
ale mogę tylko wydają się uzyskać jeden eksplodować (vAR) oświadczenie do pracy w jednym poleceniu, a jeśli próbuję łańcucha nich (tj tworzenie temp tabeli po pierwszej komendy wybuchnąć) potem oczywiście dostać ogromna liczba duplikatów, niepotrzebnych wierszy.
Wielkie dzięki!
Może to być stosowany na 3 kolumny, które mają typ sekwencji? –
@AmitKumar Tak, dlaczego nie? Musisz dostosować sygnaturę i ciało, ale nie jest to trudne. – zero323
Zastanawiam się, czy w nowszych interfejsach API danych można po prostu użyć map i spakować tablice razem bez tworzenia UDF i czy byłby on szybszy/skalowalny/zoptymalizowany przez silnik wykonawczy katalizatora. Spróbuję, kiedy na konsoli. – Davos