вы можете сделать это так:
import spark.implicits._
val df = (1 to 100).map(n => (n, s"b$n",s"c$n"))
.toDF("A","B","C")
, что даст:
+---+---+---+
| A| B| C|
+---+---+---+
| 1| b1| c1|
| 2| b2| c2|
| 3| b3| c3|
| 4| b4| c4|
| 5| b5| c5|
| 6| b6| c6|
| 7| b7| c7|
| 8| b8| c8|
| 9| b9| c9|
| 10|b10|c10|
+---+---+---+
Вместо 1 to 100
вы также можете использовать Seq.range(1,100)
, Seq.tabulate(100)(_ + 1)
или Seq.iterate(1,100)(_ + 1)
альтернативно, без построения из коллекции scala, а именно с использованием spark.range
, который дает Dataset[Long]
:
val df = spark.range(100)
.map(n => (n,s"b$n",s"c$n"))
.toDF("A","B","C")
или с использованием withColumn
и concat
val df = spark.range(1L,100L).toDF("A")
.withColumn("B",concat(lit("b"),$"A"))
.withColumn("C",concat(lit("c"),$"A"))
, который дает тот же результат
, но
как увеличивать значения столбца каждый раз, когда добавляется новая строка, в scala или java?.
Это довольно сложно, я бы не рекомендовал добавлять строки (в al oop) к кадру данных, для этого потребуется много union
, а для увеличения последнего значения потребуется агрегирование каждый раз