PK哥,请问怎样为写出去的一张表指定主键id呢。
从网上搜索到的解决方案是:
val filterDS: Dataset[Row] = jdbcDF.select("name", "image").filter( $"name" === "华为" || $"name" === "小米")
// 在原Schema信息的基础上添加一列“id”信息
val schema: StructType = filterDS.schema.add(StructField("id", LongType))
// DataFrame转RDD, 然后调用 zipWithIndex
val dfRDD: RDD[(Row, Long)] = filterDS.rdd.zipWithIndex()
// 将id字段合并在一起,merge顺序不可修改,因为添加id的schema字段在最后一个
val rowRDD: RDD[Row] = dfRDD.map(tp => Row.merge(tp._1, Row(tp._2)))
// 将添加了索引的RDD转化为 DataFrame
val result: DataFrame = spark.createDataFrame(rowRDD, schema)
执行后写入数据库的结果表,发现id列并没有加上主键约束,只是单纯的一个值。
请问PK哥,该如何加上约束呢?