Necesitamos tu ayuda para compartir nuestros escritos referente a las ciencias de la computación.
Solución:
Podrías crear una secuencia de DataFrame
s y luego usar reduce
:
val results = fruits.
map(fruit => Seq(("aaa", "bbb", fruit)).toDF("aCol","bCol","name")).
reduce(_.union(_))
results.show()
Creo que la respuesta de Steffen Schmitz es la más concisa. A continuación hay una respuesta más detallada si está buscando más personalización (de tipos de campo, etc.):
import org.apache.spark.sql.types.StructType, StructField, StringType
import org.apache.spark.sql.Row
//initialize DF
val schema = StructType(
StructField("aCol", StringType, true) ::
StructField("bCol", StringType, true) ::
StructField("name", StringType, true) :: Nil)
var initialDF = spark.createDataFrame(sc.emptyRDD[Row], schema)
//list to iterate through
var fruits = List(
"apple"
,"orange"
,"melon"
)
for (x <- fruits)
//union returns a new dataset
initialDF = initialDF.union(Seq(("aaa", "bbb", x)).toDF)
//initialDF.show()
referencias:
- ¿Cómo crear un DataFrame vacío con un esquema específico?
- https://spark.apache.org/docs/2.0.1/api/java/org/apache/spark/sql/Dataset.html
- https://docs.databricks.com/spark/latest/faq/append-a-row-to-rdd-or-dataframe.html
Si tiene marcos de datos diferentes/múltiples, puede usar el siguiente código, que es eficiente.
val newDFs = Seq(DF1,DF2,DF3)
newDFs.reduce(_ union _)
Sección de Reseñas y Valoraciones
Agradecemos que desees añadir valor a nuestro contenido dando tu experiencia en las reseñas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)