我有一张像这样的table
id name sal 1 Saa 45000 2 aaa 33000
增量加载后
id name sal 3 bbb 55000
如何只获取最近更新的值而不带时间戳
0qx6xfy61#
最简单、最有效的方法是使用分区。您可以拥有一个分区表,并在每次执行增量加载时创建一个新分区。这样,最新的分区将只有最新的记录。请注意,非常频繁的增量加载可能会导致许多小分区,这可能不是最佳的数据设计。有很多其他方法可以做到这一点,但这完全取决于您的用例、数据速率和容量。希望有帮助!
gzszwxb42#
创建一个表。
hive> create table student(id int, name string); OK Time taken: 3.503 seconds
在表中插入一条记录。
hive> insert into student values(1, 'first'); hive> select * from student; OK 1 first Time taken: 0.109 seconds, Fetched: 1 row(s)
在配置单元终端上使用以下命令查找表的位置。i、 e学生表的元存储位置。
hive> describe formatted student; You should get the details as shown below. # Detailed Table Information Database: retaildb Owner: root CreateTime: Thu Mar 08 15:52:47 PST 2018 LastAccessTime: UNKNOWN Protect Mode: None Retention: 0 Location: hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student
现在检查内容
[root@quickstart cloudera]# hdfs dfs -ls hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student Found 1 items -rwxr-xr-x 1 root supergroup 8 2018-03-08 15:53 hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/000000_0 [root@quickstart cloudera]# hdfs dfs -cat hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/* 1first
再插入一条记录。
hive> select * from student; OK 1 first 1 second Time taken: 0.095 seconds, Fetched: 2 row(s)
检查元存储位置。
[root@quickstart cloudera]# hdfs dfs -ls hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/ Found 2 items -rwxr-xr-x 1 root supergroup 8 2018-03-08 15:53 hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/000000_0 -rwxr-xr-x 1 root supergroup 9 2018-03-08 15:57 hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/000000_0_copy_1 [root@quickstart cloudera]# hdfs dfs -cat hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/000000_0_copy_1 1second [root@quickstart cloudera]# hdfs dfs -cat hdfs://quickstart.cloudera:8020/user/hive/warehouse/retaildb.db/student/* 1first 1second
2条答案
按热度按时间0qx6xfy61#
最简单、最有效的方法是使用分区。您可以拥有一个分区表,并在每次执行增量加载时创建一个新分区。这样,最新的分区将只有最新的记录。
请注意,非常频繁的增量加载可能会导致许多小分区,这可能不是最佳的数据设计。
有很多其他方法可以做到这一点,但这完全取决于您的用例、数据速率和容量。
希望有帮助!
gzszwxb42#
创建一个表。
在表中插入一条记录。
在配置单元终端上使用以下命令查找表的位置。i、 e学生表的元存储位置。
现在检查内容
再插入一条记录。
检查元存储位置。