Si supponga di avere un DataFrame con una colonna di stringhe, col1
e una colonna di array, col2
. Mi chiedevo che cosa succede dietro le quinte nel funzionamento Spark:Come viene implementato l'idioma Spark select-explode?
df.select('col1', explode('col2'))
Sembra che select prende una sequenza di Column
oggetti come input e restituisce una explodeColumn
così il match tipi. Ma la colonna restituita da explode('col2')
è logicamente di lunghezza diversa da col1
, quindi mi chiedevo come select sa "sincronizzarli" quando costruisce il suo output DataFrame. Ho provato a guardare la classe Column per gli indizi ma non ho potuto trovare nulla.
Grazie! la mia domanda era tecnicamente sui frame di dati, ma suppongo che sia lo stesso. Ecco [un esempio di questo] (https://github.com/apache/spark/blob/v2.0.0-rc1/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala# L1587-L1604) dalla sorgente Dataset.scala. – hillel
'DataFrame' è un' Dataset [Row] '. – zero323