如何添加主键

来源:5-10 通过统一配置参数管理工程中使用到的参数

M_996

2020-02-12

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哥,该如何加上约束呢?

写回答

2回答

Michael_PK

2020-02-12

大数据批处理里面一般很少用主键的概念,批处理处理一个批次,这一般是和分区对应,操作的数据是整个分区的数据。当然你要使用主键也不是不行

0
5
M_996
回复
Michael_PK
好的,了解了,谢谢PK哥答疑~
2020-02-12
共5条回复

Michael_PK

2020-02-12

你要是使用主键,那就是MySQL中ID自增就可以了

0
0

SparkSQL入门 整合Kudu实现广告业务数据分析

大数据工程师干货课程 带你从入门到实战掌握SparkSQL

535 学习 · 192 问题

查看课程