配置单元0.14正在创建事务表



我是从hive 0.14开始支持的hive事务的新手。

我在配置单元中创建了一个事务表,如下

创建由(id)聚集的表test_transactional(id int,name string)放入2个存储为orc TBLPROPERTIES的桶中("transactional"="true");

我还创建了一个表,其中包含一些具有id、字符串列的示例数据。

创建表stage(id int,name string)ROW FORMAT DELIMITED字段以","终止;

然后,我将数据从stage表插入到test_transactional表中,如下所示,

插入表test_transactionalselect*from stage;

我还运行了一个更新语句,看看它是否有效。到目前为止还不错。

问题

  1. 当我对test_transactional表的hdfs文件夹进行ls操作时,我看不到基本文件夹,只看到delta文件夹。根据文档,我的理解是基本文件夹应该存在。或者只有在运行主压缩时才会创建基本文件夹?

  2. 当更新/插入/删除语句显式运行时,表会被更新,但在典型的ETL中,当我在暂存表中有数据时,我如何确定它是更新、插入还是删除?我是否需要设置一些属性,以便配置单元可以自动执行此操作?如果没有,如何处理?

  1. 是的,你是对的,只有当主压缩运行时,才会创建基本文件夹。您可以通过启动以下命令手动运行它

Alter Table[Table name]Partition[Partition name]compact='major'

  1. 我们应该有3列(createdon、modifiedon、deleteflag)在基本系统中分别跟踪(插入、更新、删除),从中我们将数据拉入暂存表

限制:基本系统不应删除任何记录,而应设置deleteflag=1

相关内容

  • 没有找到相关文章

最新更新