gpt4 book ai didi

hadoop - 如何使用PIG脚本验证列表

转载 作者:行者123 更新时间:2023-12-02 21:09:14 26 4
gpt4 key购买 nike

我有以下模式的 list 1

{customerId: int,storeId: int,products: {(prodId: int,name: chararray)}}



具有以下架构的客户列表

{uniqueId: int,customerId: int,name: chararray}



具有以下架构的商店列表

{uniqueId: int,storeNum: int,name: chararray}



和带有架构的产品列表

{uniqueId: int,sku: int,productName: chararray}



现在,我想用其他列表搜索列表1中每个项目的customerId,storeId和prodId,以检查ID是否有效。有效项必须存储在文件中,无效项存储在文件中。

由于PIG对我来说还很新,我觉得这很复杂。请给我一个很好的逻辑,以使用Apache PIG完成这项工作。

最佳答案

首先加载所有数据,将其视为表

cust_data = LOAD '\your\path\to\customer\data' USING PigStorage() as (uniqueId: int, customerId: int, name: chararray);

store_data = LOAD '\your\path\to\store\data' USING PigStorage() as (uniqueId: int, storeNum: int, name: chararray);

product_data = LOAD '\your\path\to\product\data' USING PigStorage() as (uniqueId: int, sku: int, productName: chararray);

您可以通过以下方式检查已加载的数据模式:
DESCRIBE cust_data;
DESCRIBE store_data;
DESCRIBE product_data;

首先使用uniqueId联接客户和商店数据(我们正在进行等值联接)
cust_store_join = JOIN cust_data BY uniqueId, store_data BY uniqueId;

然后生成您的列
cust_store = FOREACH cust_store_join GENERATE cust_data::uniqueId as uniqueId, cust_data::customerId as customerId, cust_data::name as cust_name, store_data::storeNum as storeNum, store_data::name as store_name;

现在,使用uniqueId加入客户商店和产品(我们正在进行等值连接)
cust_store_product_join = JOIN cust_store BY uniqueId, product_data BY uniqueId;

最终生成所有所需的列
customer_store_product = FOREACH cust_store_product_join GENERATE cust_store::uniqueId as uniqueId, cust_store::customerId as customerId, cust_store::cust_name as cust_name, cust_store::storeNum as storeNum, product_data::sku as sku, product_data::productName as productName;

现在将所需的列存储在本地/ hdfs目录中
下面的store命令将存储所有三个表中的所有匹配的uniqueId,即客户,商店,产品
STORE customer_store_product INTO '\your\output\path' USING PigStorage(',');

同样,您可以加入list1模式并使用相同的逻辑生成列并存储数据。
希望这可以帮助

关于hadoop - 如何使用PIG脚本验证列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40839376/

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