我是hive 0.14以来支持hive交易的新手。
我在hive中创建了一个事务表,如下所示
创建表test_transactional(id int,name string)聚集(id) 分为两个存储为orc TBLPROPERTIES的桶(' transactional' =' true');
我还创建了一个包含一些id,string列的示例数据的表。
创建表阶段(id int,name string)ROW FORMAT DELIMITED FIELDS 终止于',';
然后我将阶段表中的数据插入到test_transactional表中,如下所示,
插入表test_transactional select * from stage;
我还运行了一个更新语句,看它是否正常工作。到目前为止一切都很好。
问题
当我在test_transactional表的hdfs文件夹上执行ls时,我看不到基本文件夹,只看到delta文件夹。根据文档,我的理解是应该存在基本文件夹。或者只有在运行主要压缩时才会创建基本文件夹?
当显式运行update / insert / delete语句时,表会更新,但在典型的ETL中,当我在登台表中有数据时,如何确定它是更新,插入还是删除?我是否需要设置一些属性以便hive可以自动执行此操作?如果不能如何处理?
答案 0 :(得分:0)
更改表[表名]分区[分区名称] compact ='major'
限制:基本系统不应删除任何记录,而应设置deleteflag = 1