hadoop - 更改 pig latin 中列的数据类型

标签 hadoop apache-pig

我和 pig 拉丁语有关系。有很多列,所以我不想在加载关系时指定数据类型。有没有办法在事后改变它?

batters = LOAD 'hdfs:/home/ubuntu/pigtest/Batting.csv' using PigStorage(',');
filtered_batters = FOREACH batters2 GENERATE $0 as id, $5 as bats;
describe filtered_batters;
filtered_batters: {id: bytearray, bats: bytearray}

我问的原因是因为我试图按 id 分组并对 bats 列求和,但出现错误。我的想法是数据类型不适合求和。现在它是一个 bytearray,我认为它需要是一个 int 以便我对其求和请告诉我这是否正确,如果正确,如何执行上述操作。

谢谢

最佳答案

参见 CAST运算符。如果您未在 LOAD 语句中指定数据类型,Pig 将使用默认字节数组作为字段的数据类型。

filtered_batters = FOREACH batters2 GENERATE (int)$0 as id, (int)$5 as bats;

filtered_batters = FOREACH batters2 GENERATE $0 as id:int, $5 as bats:int;

关于hadoop - 更改 pig latin 中列的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833352/

相关文章:

hadoop - 适用于 Hadoop 的 Google Cloud 连接器不适用于 Pig

java hadoop作业在reducer outputcollector中操作1/double(ONE DIVISION a Double)中的奇怪行为

java - 无法在Pig中使用最大值和求和函数

hadoop - 将Pig 0.16.0 UDF与Eclipse集成

hadoop - Datanode HBase和NameNode没有启动hortonworks

hadoop - PIG Latin 中 FLATTEN 运算符的用途是什么

hadoop - 是否有相当于 "SHOW TABLES"的 apache pig?

hadoop性能比较

hadoop - 是否可以让 Nifi 放入多个 HDFS 文件夹?

hadoop - Hive 读取序列文件