hive删除重复记录

yebdmbv4  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(608)

在配置单元中,如何删除重复记录?下面是我的案子,
首先,我将数据从product表加载到products文件格式。产品表上有25行记录

FROM products INSERT OVERWRITE TABLE products_rcfileformat         
SELECT *;

其次,我将数据从product表加载到products文件格式。产品表上有25行记录。但这次我没有使用overwrite子句

FROM products INSERT INTO TABLE products_rcfileformat         
SELECT *;

当我查询数据时,它给我的总行数=50,这是正确的

从hdfs检查,似乎hdfs制作了文件\u copy\u 1的另一个副本,而不是追加到000000\u 0

现在我想删除那些从\u copy\u 1读取的记录。如何在hive命令中实现这一点?如果我没有弄错,我可以使用hdfs dfs-rm命令删除\u copy\u 1文件,然后重新运行insert overwrite命令。但我想知道是否可以通过使用像delete语句这样的hive命令示例来实现这一点?

zzoitvuj

zzoitvuj1#

对数据进行分区,使要删除的行(使用窗口函数row\u number)位于各自的分区中。然后可以删除分区而不影响表的其余部分。这是一个相当可持续的模型,即使您的数据集变得相当大。
有关分区的详细信息。
www.tutorialspoint.com/hive/hive_partitioning.htm

6yjfywim

6yjfywim2#

从hdfs检查,似乎hdfs制作了文件\u copy\u 1的另一个副本,而不是追加到000000\u 0
原因是hdfs是只读的,不可编辑,因为hive仓库文件(或任何可能的位置)仍然在hdfs中,所以它必须创建第二个文件。
现在我想删除那些从\u copy\u 1读取的记录。如何在hive命令中实现这一点?
请检查此帖子-基于列删除配置单元中的重复行。
如果你对那里的答案满意,请告诉我。我有另一个方法,它删除重复的条目,但可能不是你想要的方式。

相关问题