在Hive中我有两个表:
'old_books'
title String, author String, year Int, outOfPrint Boolean;
和
'new_books'
title String, author String, year Int;
由于某些错误,创建这些表的人已经在“old_books”表中添加了一些新标题。
是否可以通过Hive从'old-books'表中减去两个表中存在的记录?
到目前为止,我只是选择使用Hive请求选择存在于两个表中的书籍:
SELECT old_books.* FROM old_books JOIN new_books ON (old_books.title=new_books.title);
如何从'old_books'中对此请求的结果进行子结构?
答案 0 :(得分:0)
假设你有Hive 01.3或更高版本,你可以使用not exists子句:
从old_books中选择* a不存在( SELECT 1 FROM old_books b JOIN new_books c ON(b.title = c.title) 其中a.book_id = b.book_id);
以下是参考: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SubQueries
答案 1 :(得分:0)
我发现以下内容对我有用:
INSERT OVERWRITE TABLE corrected_old_books
SELECT old_books.* FROM old_books left JOIN new_books ON (new_books.title=old_books.title) where new_books.title is NULL;
我使用/usr/lib/hive/lib/hive-hwi-0.13.0.2.1.3.0-563.jar