如何删除配置单元中重复次数少于 20 次的列 table
how to delete columns with less than 20 repetitions on a hive table
我正在尝试了解如何删除 user_id 在评分中重复次数少于 20 次的内容 table(少于 20 票的 id 会打乱预测)
delete * FROM rating
WHERE COUNT(user_id) <20;
以下是我得到的错误:org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:SemanticException [错误 10128]:第 3:6 行尚不支持 UDAF 'COUNT' 的位置”
如果您有 transactional table 那么您可以 delete user_id
计数小于 20
使用以下语句。
hive> delete from rating where user_id in
(select user_id from rating group by user_id having count(user_id) < 20);
有两个大问题
- 您的查询有误。要正常工作,您需要在
user_id
列上使用聚合函数 count
和 groupby。
- 您不能使用
delete
语句删除记录,除非您 table 是 transactional table.
要从 非跨国 table 中删除记录,您需要使用 insert overwrite
语句用您的记录覆盖 table想。
语法:
Insert overwrite table select * from <table_name> where <condition>
你的代码应该是这样的
INSERT overwrite TABLE rating
SELECT *
FROM rating
WHERE
user_id IN
(
SELECT user_id
FROM rating
GROUP BY(user_id)
HAVING count(user_id) > 20
);
我正在尝试了解如何删除 user_id 在评分中重复次数少于 20 次的内容 table(少于 20 票的 id 会打乱预测)
delete * FROM rating
WHERE COUNT(user_id) <20;
以下是我得到的错误:org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:SemanticException [错误 10128]:第 3:6 行尚不支持 UDAF 'COUNT' 的位置”
如果您有 transactional table 那么您可以 delete user_id
计数小于 20
使用以下语句。
hive> delete from rating where user_id in
(select user_id from rating group by user_id having count(user_id) < 20);
有两个大问题
- 您的查询有误。要正常工作,您需要在
user_id
列上使用聚合函数count
和 groupby。 - 您不能使用
delete
语句删除记录,除非您 table 是transactional table.
要从 非跨国 table 中删除记录,您需要使用 insert overwrite
语句用您的记录覆盖 table想。
语法:
Insert overwrite table select * from <table_name> where <condition>
你的代码应该是这样的
INSERT overwrite TABLE rating
SELECT *
FROM rating
WHERE
user_id IN
(
SELECT user_id
FROM rating
GROUP BY(user_id)
HAVING count(user_id) > 20
);