创建和删除表

上一节使用CREATE TABLE语句创建了Iceberg表。除此之外,Iceberg也支持CTAS和RTAS方法来创建表。下面分别来了解这两种方法。

1.CTAS(create table ... as select)

在使用SparkCatalog时,Iceberg支持CTAS作为原子操作。在使用SparkSessionCatalog时CTAS虽然是受支持的,但不是原子的。

下面应用CTAS创建一个新的Iceberg表my_tb2,其内容来自my_tb1中所有id为偶数的行。代码如下:

// CTAS
spark.sql("""
    CREATE TABLE hadoop_prod.my_db.my_tb2
    USING iceberg
    AS  select * 
        from hadoop_prod.my_db.my_tb1
        where id%2==0
""")

// 查询新表的数据
spark.table("hadoop_prod.my_db.my_tb2").show()

执行上面的代码,查询结果如下:

+---+----+
| id|data|
+---+----+
|  2|    b|
|  4|    d|
+---+----+

2.RTAS(replace table ... as select)

当使用SparkCatalog时,Iceberg支持RTAS作为原子操作。在使用SparkSessionCatalog时RTAS虽然是受支持的,但不是原子的。原子表替换使用SELECT查询的结果创建一个新的快照,但保留表历史。

下面应用RTAS使 ......

......

抱歉,只有登录会员才可浏览!会员登录


《Spark原理深入与编程实战》