我是Pig的新手。数据集是

-1,xyz,bio
-2,abcd,physics

我跑了以下查询,
z1 = load 'demo.txt' using PigStorage() as (name:chararray);

z2 = foreach z1 generate TOKENIZE(z1.name,','); --- gives error "scalar has more than one row in o/p"

z2 = foreach z1 generate TOKENIZE(name,','); -- ran fine

描述z1:
z1: {name:chararray}

据我了解,点运算符用于取消对元组或bag的引用。在这里z1是我的元组,我正在尝试通过取消引用来获取字段。因此z1.name应该等于name。请帮助我了解我要去哪里错了?

最佳答案

在您的示例中,z1是名称作为列的关系。要标识/引用关系列,您需要使用::

正确的脚本是

z1 = load 'demo.txt' using PigStorage() as (name:chararray);
z2 = foreach z1 generate TOKENIZE(z1::name,',');

08-28 05:18