gpt4 book ai didi

hadoop - Hadoop Pig:使用STARTSWITH显示条目

转载 作者:行者123 更新时间:2023-12-02 21:34:37 25 4
gpt4 key购买 nike

我在使用STARTSWITH字符串函数时遇到问题。我想显示以20040开头的System_Period中的所有记录

transactions = LOAD '/home/cloudera/datasets/assignment2/Transactions.csv'
USING PigStorage(',') AS (Branch_Number:int, Contract_Number:int,
Customer_Number:int,Invoice_Date:chararray, Invoice_Number:int,
Product_Number:int, Sales_Amount:double, Employee_Number:int,
Service_Date:chararray, System_Period:int);

sysGroup = GROUP transactions BY System_Period;

sysFilter = FILTER sysGroup BY STARTSWITH(transactions.System_Period, 20040);

DUMP sysFilter;

我收到的错误是
Could not infer the matching function for org.apache.pig.builtin.STARTSWITH as multiple or none of them fit. Please use an explicit cast.

最佳答案

STARTSWITH仅用于比较tuple1和tuple2,以检查tuple1是否包含tuple2。您不能为此传递关系或包包。还有一点要注意的是它只接受String(chararray)而不是整数。要么在GROUP BY之前过滤以20040开头的system_period,然后将char_array加载为chararray,然后根据需要将其强制转换为过滤器。

transactions = LOAD '/home/cloudera/datasets/assignment2/Transactions.csv'
USING PigStorage(',') AS (Branch_Number:int, Contract_Number:int,
Customer_Number:int,Invoice_Date:chararray, Invoice_Number:int,
Product_Number:int, Sales_Amount:double, Employee_Number:int,
Service_Date:chararray, System_Period:chararray);
sysFilter = FILTER transactions BY STARTSWITH(System_Period, '20040');

否则 GROUP BY FLATTEN结果之后,然后进行过滤
transactions = LOAD '/home/cloudera/datasets/assignment2/Transactions.csv'
USING PigStorage(',') AS (Branch_Number:int, Contract_Number:int,
Customer_Number:int,Invoice_Date:chararray, Invoice_Number:int,
Product_Number:int, Sales_Amount:double, Employee_Number:int,
Service_Date:chararray, System_Period:chararray);
sysGroup = GROUP transactions BY System_Period;
flatres = FOREACH sysGroup GENERATE group,FLATTEN(transactions);
sysFilter = FILTER flatres BY STARTSWITH(System_Period, '20040');

关于hadoop - Hadoop Pig:使用STARTSWITH显示条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33192674/

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