hadoop - 通过使用Hive将2个表连接到C中来存储最新的tweet

标签 hadoop twitter hive

我有3个表A,B,常见的东西是tweeetId,account_id,这两个表我都想加入A和B,因为我曾经查询过

Select created_date, tweet_text, user_description
from A inner join
     B
     on A.tweetId = B.tweetId and A.account_id = B.accountid;

我想在加入B之后获取最新的created_date,然后将该最新创建的日期与C的最新创建的日期进行比较。因此,目标是每次查询运行时,我都需要在A中存在最新推文的情况下将数据插入C中,而B必须转储到C中。

最佳答案

要按日期获取最新推文,请使用row_number()函数。
像这样:

insert overwrite C  --or insert into
select * from 
(
    select created_date, tweet_text, user_description
           row_number() over(partition by weetId, account_id order by created_date desc) as rn,
           tweetId, account_id --PK 
    from A inner join
         B
         on A.tweetId = B.tweetId and A.account_id = B.accountid
)s
where s.rn=1; --take the latest

关于hadoop - 通过使用Hive将2个表连接到C中来存储最新的tweet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40275229/

相关文章:

hadoop - sudo jps找不到MapReduce jobtracker

Hadoop超立方体

hadoop - Apache Hive 中的字符集、口音、特殊字符

hadoop - 为什么对 pig 中的元素计数比 hive 慢得多

hadoop - 运行Hive查询时出现MySQL错误

hadoop - 在没有 Sentry 的情况下授权 Hadoop 用户

java - 总的 JVM 在 Hadoop 集群上运行? Hadoop 中的 JVM 生命周期

api - 什么是 Twitter 指数?

php - Openssl PHP 不工作

ios - UIActivityViewController Facebook 分享文字