2015-11-11 135 views
0

我是自hive 0.14以来支持的hive交易的新手。Hive 0.14创建交易表

我在蜂房创建的事务表如下

创建表test_transactional(ID INT,名称串)由存储为兽人TBLPROPERTIES(ID) 成2段( '交易'= '真' 群集);

我还创建了一些表格,其中包含id,string列的一些示例数据。

create table stage(id int,name string)ROW FORMAT DELIMITED FIELDS TERMINATED BY',';

然后我插入从阶段表中的数据到test_transactional表如下,

插入到表test_transactional选择来自阶段*;

我也跑了一个更新语句,看看它的工作。到现在为止还挺好。

问题

  1. 当我这样做对test_transactional表HDFS文件夹中的LS,我没有看到基础文件夹,但只有增量文件夹中。根据文档,我的理解是基文件夹应该存在。或者仅当主要压缩运行时才会创建基础文件夹?

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

回答

0
  1. 是的,你是主要的压实运行仅在创建正确的基础文件夹。 可以手动通过烧成以下命令运行它

ALTER TABLE [表名]分区[分区名称]紧凑= '主要'

  • 我们应该有3列(createdon,modifiedon,deleteflag)分别在基本系统中跟踪(插入,更新,删除)从我们将数据拉入临时表的位置。
  • 限制:基本系统不应删除任何记录,而应设置deleteflag = 1