Tambahkan bidang yang dibuat secara otomatis ke kerangka data

Saya memiliki kerangka data ini, yang memang mengandung nilai

val cabArticleLocal = spark.load("jdbc", Map("url" -> url, "dbtable" -> "cabarticle"))
cabArticleLocal.show
root
 |-- is_enabled: boolean (nullable = true)
 |-- cab_article: long (nullable = true)
 |-- article_id: long (nullable = true)

 +----------+-----------+----------+
 |is_enabled|cab_article|article_id|
 +----------+-----------+----------+
 +----------+-----------+----------+

yang akan dimasukkan ke dalam database PostgreSQL dengan struktur ini

id 
is_enabled
cab_article
article_id 

Bagaimana saya bisa menghasilkan id bidang ke dalam kerangka data menjadi sesuatu dengan id yang dibuat secara otomatis dimasukkan ke kerangka data yang ada. Terima kasih

+----------+-----------+----------+---+
|is_enabled|cab_article|article_id| id|
+----------+-----------+----------+---+
+----------+-----------+----------+---+

person maher    schedule 24.10.2017    source sumber


Jawaban (1)


Anda dapat menggunakan fungsi monotonically_increasing_id sebagai berikut

import org.apache.spark.sql.functions._
cabArticleLocal.withColumn("id", monotonically_increasing_id())

atau Anda dapat menggunakan fungsi row_number di atas fungsi Window sebagai

import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.Window
cabArticleLocal.withColumn("id", row_number().over(Window.orderBy("article_id")))

Atau Anda dapat menggunakan bahasa kueri sebagai

cabArticleLocal.createOrReplaceTempView("tempTable")
sqlContext.sql("select row_number() over (order by article_id) as id,is_enabled,cab_article,article_id from tempTable")
person Ramesh Maharjan    schedule 24.10.2017