我是生猪脚本新手。
我想将多个参数传递给Pig filter UDF,但我得到的错误是“无效的标量投影:需要从关系中投影列才能用作标量”。
我正在做以下步骤。
input = load '....';
dump input; /* working able to see data*/
output = FILTER input by not FilterUDF(input,val1,val2);
这不管用。所以我试着跟着。
input = load '......';
dump input; /* working able
下面是一个示例表:
account_no season animal
A spring sheep
A spring cow
A winter pig
B winter lamb
我使用的是连接到红移的DBeaver,我想按、account_no、和 single 分组,并将动物连接到一个列中,如下所示:
account_no season animalList
A spri
在Apache Pig 0.15中,我有两个简单的列表(没有id/主键等)。我希望将它们合并在一起,以创建一个包含两列的元组列表。示例:
Names
-----
Peter
John
Anne
Ages
-----
45
23
44
我想以这样的方式结束:
Names Age
---------------
Peter 45
John 23
Anne 44
我知道我可以在两个列表上使用排名,然后加入,但这看起来太昂贵了,因为我在这些列表中有数百万个条目。我有点想在没有连接参数的情况下使用"merge“进行连接...
你知道如何在Apache Pig中高效地做到这一点吗?
我在Pig中的单个列上执行外部连接,如下所示
result = JOIN A by id LEFT OUTER, B by id;
我如何连接两列,就像-
WHERE A.id=B.id AND A.name=B.name
什么是猪的等价物?我在pig manuals...any帮助中找不到任何示例?
我有一个宏用来计算过滤数据后的记录数。但是当我在grunt shell中运行宏时,出现了以下错误:
grunt> DEFINE count_by_group(X) RETURNS Y {
A = GROUP $X ALL;
$Y = FOR EACH A GENERATE COUNT($X);
};
出现的错误如下:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2999:
Unexpected internal error. Can not create a Path from a nu
假设我有一个表,其中包含以下列(A、B、C)
如何编写pig语句在列( A)上创建group by。然后过滤where count (列B> 100)和count of (distinct(列C) > 3)?
从我所拥有的:
我首先删除了B小于100的count
filter_column = FILTER data by b > 100;
然后在A上做了一个分组:
group_1 = GROUP filter_column by A;
在C列中不同值的计数大于3的情况下,现在如何过滤这个group_1?
我有这些桌子
DataType
Name TableName
-------------------
Animal dataAnimal
Vehicle dataVehicle
dataVehicle
ID Name Speed
-------------------
1 Car 10
2 Bike 2
3 Horse 4
dataAnimal
ID Name ImageFile
-----------------------------
1 Cow
我有越来越多的in想要动态传递到pig脚本中,以帮助处理单个列的数据。
我手动传递参数值,这是不可伸缩的。
命令示例:
pig --param id1=123 id2=456 id3=789 get foo.pig
脚本示例
A = load '$INPUT' using AvroStorage();
B = foreach A generate value.rawData#'id' as user_id:chararray;
C = FILTER B BY user_id == '$id1' or user_id == '$id2
我有一个类似于以下内容的猪脚本:
a = LOAD 'feedname.hourly_data'
USING org.apache.hcatalog.pig.HCatLoader();
b = FILTER a BY dt=='$date{00}';
c = GROUP b ALL;
d = FOREACH c GENERATE COUNT(b);
dump d;
脚本使用以下参数执行:
pig -useHCatalog -p date=20140708 my_script.pig
请注意,此脚本适用于硬编码的dt值:
a = LOAD 'feedn
我将利用Stack overflow中已经关闭的案例
在sql中创建共现矩阵有一个很好的解决方案,如下所示:
SELECT a.uid first_uid, b.uid second_uid, COUNT(*) cnt
FROM my_table a JOIN my_table b ON b.id = a.id AND b.uid > a.uid
GROUP BY a.uid, b.uid
给定一个表:
id uid
1 a
1 b
1 c
2 a
2 b
2 c
3
假设我想通过同一字段中的值来选择数据的一个子集。现在我必须做这样的事情
TestLocationsResults = FILTER SalesData by (StoreId =='17'
or StoreId =='85'
or StoreId =='12'
or StoreId =='45'
or StoreId =='26'
or StoreId =='75'
or StoreId =='13'
)
在SQL中,我们可以简单地这样做:
SELECT * FROM SalesD
我正在寻找一种方法来将相同的值写入具有相同ID的所有记录。我使用Apache Pig在HDFS环境中加载此表,python代码仅用于此转换(作为UDF)。以下是一个示例:
ID ; firstname ; lastname
1234 Alex Jones
1234 Frank na
1234 Maria na
我需要的是将姓氏(Jones)分配给每个具有相同ID的人。我知道如何对熊猫执行此操作,但对我来说,问题是我必须在不使用任何包的情况下执行此操作。如有任何建议,欢迎光临!谢谢!