使用scala在Spark DataFrame中添加新的行。

我有一个数据框架,像。

Name_Index  City_Index
  2.0         1.0
  0.0         2.0
  1.0         0.0

我有一个新的值列表。

list(1.0,1.0)

我想把这些值添加到数据框中的新行中,如果之前所有的行都被删除的话。

我的代码。

 val spark = SparkSession.builder
      .master("local[*]")
      .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
      .getOrCreate()


    var data = spark.read.option("header", "true")
      .option("inferSchema", "true")
      .csv("src/main/resources/student.csv")

   val someDF = Seq(
         (1.0,1.0)
        ).toDF("Name_Index","City_Index")

   data=data.union(someDF).show()

它显示的输出是这样的

Name_Index  City_Index
  2.0          1.0
  0.0          2.0
  1.0          0.0
  1.1          1.1

但输出应该是这样的 这样,所有之前的行都被删除,新的值被添加。

Name_Index   City_Index
  1.0          1.0

解决方案:

你可以使用 limit & union 函数来实现。

scala> val df = Seq((2.0,1.0),(0.0,2.0),(1.0,0.0)).toDF("name_index","city_index")
df: org.apache.spark.sql.DataFrame = [name_index: double, city_index: double]

scala> df.show(false)
+----------+----------+
|name_index|city_index|
+----------+----------+
|2.0       |1.0       |
|0.0       |2.0       |
|1.0       |0.0       |
+----------+----------+


scala> val ndf = Seq((1.0,1.0)).toDF("name_index","city_index")
ndf: org.apache.spark.sql.DataFrame = [name_index: double, city_index: double]

scala> ndf.show
+----------+----------+
|name_index|city_index|
+----------+----------+
|       1.0|       1.0|
+----------+----------+


scala> df.limit(0).union(ndf).show(false) // this is not good approach., you can directly call ndf.show
+----------+----------+
|name_index|city_index|
+----------+----------+
|1.0       |1.0       |
+----------+----------+

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何旋转svg并将其放置在屏幕的左侧?

2022-5-12 19:43:23

解决方案

如何放弃第2列的行索引?

2022-5-12 19:43:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索