pyspark 创建Delta表时如何指定主键约束

9jyewag0  于 2023-08-02  发布在  Spark
关注(0)|答案(1)|浏览(147)

我正在使用类似this的东西来创建 Dataframe 。然后,我使用类似下面的方法将其保存在delta表中。

diamonds_with_schema.write.format("delta").saveAsTable(saveLocation)

字符串
我的问题是如何使列作为主键。另外,如何使一个具有两个或多个列的聚集主键。

yvt65v4c

yvt65v4c1#

如果你使用的是Databricks,有一个部分解决方案。Public Preview中有primary key支持声明主键和外键关系
主键和外键约束在Databricks Runtime 11.1及更高版本中可用。
主键和外键约束需要Unity Catalog和Delta Lake。
您可以对Unity目录表中的字段使用主键和外键关系。主键和外键仅供参考,不强制使用。外键必须引用另一个表中的主键。
可以在创建表的过程中将主键和外键声明为表规范子句的一部分。在CTAS报表中不允许使用此条款。还可以向现有表添加约束。

CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
                CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
                fk1 INTEGER, fk2 INTEGER,
                CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);

字符串
您可以查询information_schema或使用DESCRIBE来获取有关如何跨给定目录应用约束的详细信息。
https://docs.databricks.com/tables/constraints.html
信息性主键和外键约束对表中字段之间的关系进行编码,并且不强制执行。

相关问题