gpt4 book ai didi

hadoop - 在 hadoop 中加入 2 个表

转载 作者:可可西里 更新时间:2023-11-01 14:36:52 26 4
gpt4 key购买 nike

我是 hadoop 的新手,所以请多多包涵。任何帮助,将不胜感激。

我需要加入 2 个表,表 1 将有 pagename , pagerank例如。实际数据集庞大但模式相似

pageA,0.13
pageB,0.14
pageC,0.53

表2,是一个简单的wordcount类型的表,有word,pagename例如。实际数据集很大但具有相似的模式

test,pageA:pageB
sample,pageC
json,pageC:pageA:pageD

现在,如果用户从第二个表中搜索任何词,我应该根据表 1 中的 pagerank 向他提供页面结果。

搜索测试时输出,

test = pageB,pageA

我的方法是将第一个表加载到分布式缓存中。在 map 方法中读取第二个表获取单词的页面列表,使用加载到分布式缓存中的第一个表中的 pagerank 信息对列表进行排序。这适用于我正在处理的数据集,但想知道是否有更好的方法,还想知道如何使用 pig 或 hive 完成此连接。

最佳答案

使用 pig 脚本的简单方法:

PAGERANK = LOAD 'hdfs/pagerank/dataset/location' USING PigStorage(',')
AS (page:chararray, rank:float);

WORDS_TO_PAGES = LOAD 'hdfs/words/dataset/location' USING PigStorage(',')
AS (word:chararray, pages:chararray);

PAGES_MATCHING = FOREACH (FILTER WORDS_TO_PAGES BY word == '$query_word') GENERATE FLATTEN(TOKENIZE(pages, ':'));

RESULTS = FOREACH (JOIN PAGERANK BY page, PAGES_MATCHING BY $0) GENERATE page, rank;

SORTED_RESULTS = ORDER RESULTS BY rank DESC;
DUMP SORTED_RESULTS;

脚本需要一个参数,就是查询词:

 pig -f pagerank_join.pig -param query_word=test

关于hadoop - 在 hadoop 中加入 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36060536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com