如何在不使用 SQL 插入的情况下向 Scala 中的 DataFrame 添加/追加新行?

Met*_*ata 0 scala apache-spark apache-spark-sql

我有一个按以下方式创建的 DataFrame。

val someDF = Seq((8, "bat"),(64, "mouse"),(-27, "horse")).toDF("number", "word")
someDF.printSchema
root
 |-- number: integer (nullable = false)
 |-- word: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

使用 SQL API,可以通过创建临时表并运行插入查询向其中插入一行。有什么方法可以使用 DataFrame API 的方法追加/添加新行?

sac*_*hav 6

您可以使用union

val someDF = Seq((8, "bat"),(64, "mouse"),(-27, "horse")).toDF("number", "word")
someDF.union(Seq((10, "dog")).toDF).show
/*
+------+-----+
|number| word|
+------+-----+
|     8|  bat|
|    64|mouse|
|   -27|horse|
|    10|  dog|
+------+-----+
*/
Run Code Online (Sandbox Code Playgroud)

  • 您可以添加警告,两个数据框中的列顺序必须相同。如果列名称的顺序不同,Spark 不会警告用户。仅当列类型不匹配时它才会发出警告。要记住的事情。 (4认同)