hive查询来收集每个用户的twitter数据

l2osamch  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

我正在使用flume,hive和db-derby的hadoop我有twitter数据在hadoop中以json格式工作良好,现在我需要根据用户tweet合并数据,如
数据

{user_id:12,text:"abcd"}
{user_id:13,text:"dcba"}
{user_id:12,text:"efjh"}
{user_id:13,text:"hjfe"}

我需要这样的结果

{user_id:12 , tweets:["abcd","efjh"]}
{user_id:13 , tweets:["dcba","hjfe"]}

我的 hive table看起来像

CREATE EXTERNAL TABLE IF NOT EXISTS tweets (
created_at INT,
id STRING,
id_str STRING,
source STRING,
text STRING,
retweet_count INT,
favorite_count INT,
user_id INT,
user_id_str STRING,
user_name STRING,
user_screen_name STRING,
user_location STRING,
user_url STRING,
user_description STRING,
user_protected boolean,
user_followers_count INT,
user_friends_count INT,
user_listed_count INT,
user_statuses_count INT,
user_created_at INT,
user_favourites_count INT,
user_utc_offset INT,
user_lang STRING,
user_time_zone STRING,
user_geo_enabled boolean,
user_verified boolean
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
LOCATION '/user/data/twitter';

我只需要两个字段作为输出,就像我的必选输出示例一样

{user_id:12 , tweets:["abcd","efjh"]}
{user_id:13 , tweets:["dcba","hjfe"]}

也需要这个文件格式
注意:输出为json格式不是强制性的
谢谢!

omhiaaxx

omhiaaxx1#

我找到了解决这个问题的办法:
配置单元有一个函数列表,在上面的问题案例中修改了您的查询结果我找到了一个配置单元函数,它满足问题的所需输出。
函数名为collect\u set()。
此函数的用法示例:

SELECT user_id , collect_set(text) FROM tweets GROUP BY user_id;

结果:

user_id        text
user_id:12  ["abcd","efjh"]
user_id:13  ["dcba","hjfe"]

相关问题