在配置单元中,如何删除重复记录?下面是我的案子,
首先,我将数据从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命令示例来实现这一点?
2条答案
按热度按时间zzoitvuj1#
对数据进行分区,使要删除的行(使用窗口函数row\u number)位于各自的分区中。然后可以删除分区而不影响表的其余部分。这是一个相当可持续的模型,即使您的数据集变得相当大。
有关分区的详细信息。
www.tutorialspoint.com/hive/hive_partitioning.htm
6yjfywim2#
从hdfs检查,似乎hdfs制作了文件\u copy\u 1的另一个副本,而不是追加到000000\u 0
原因是hdfs是只读的,不可编辑,因为hive仓库文件(或任何可能的位置)仍然在hdfs中,所以它必须创建第二个文件。
现在我想删除那些从\u copy\u 1读取的记录。如何在hive命令中实现这一点?
请检查此帖子-基于列删除配置单元中的重复行。
如果你对那里的答案满意,请告诉我。我有另一个方法,它删除重复的条目,但可能不是你想要的方式。