Sto usando Spark SQL (menziono che è in Spark nel caso in cui questo influisce sulla sintassi SQL - non sono abbastanza familiare per essere sicuro) e ho un tabella che sto cercando di ristrutturare, ma mi sto bloccando cercando di trasporre più colonne contemporaneamente.Esplodi (trasporre?) Più colonne nella tabella Spark SQL
Fondamentalmente ho dati che assomiglia:
userId someString varA varB
1 "example1" [0,2,5] [1,2,9]
2 "example2" [1,20,5] [9,null,6]
e mi piacerebbe ad esplodere sia Vara varB contemporaneamente (la lunghezza sarà sempre consistente) - in modo che il risultato finale assomiglia a questo:
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
ma riesco solo per ottenere una singola istruzione esplodere (var) a lavorare in un unico comando, e se provo a catena loro (cioè creare una tabella temporanea dopo il primo comando di esplodere) allora io, ovviamente, ottengo un enorme numero di righe duplicate e non necessarie.
Grazie mille!
questo può essere applicato su 3 colonne che sono di digita la sequenza? –
@AmitKumar Sì, perché no? Dovrai regolare firma e corpo ma non è difficile. – zero323
Mi chiedo se nella più recente API dei dataset si possa semplicemente usare map e zip gli array insieme senza creare l'UDF e se sarebbe più veloce/scalabile/ottimizzato dal motore di esecuzione di catalyst. Ci proverò quando alla console. – Davos