hadoop - Pig - 如何一步加入和定义模式

标签 hadoop apache-pig bigdata cloudera

我采取以下措施:

A = LOAD 'a.txt' USING PigStorage('\\u001') AS (
    foo:int
    ,bar:chararray
);
B = LOAD 'b.txt' USING PigStorage('\\u001') AS (
    foo:int
    ,baz:long
);
C = JOIN A BY foo, B BY foo;
D = FOREACH C GENERATE
    A::foo AS foo
    ,A::bar AS bar
    ,B::baz AS baz
;

如何一步加入和定义模式?

最佳答案

根据documentation加入关系时不能定义模式。
笔记: 从句法上讲,您可以嵌套命令以节省一些步骤,例如:

D = foreach
    (join (LOAD 'a.txt' USING PigStorage('\\u001') AS (foo:int ,bar:chararray)) by foo,
          (LOAD 'b.txt' USING PigStorage('\\u001') AS (foo:int ,baz:long)) by foo
    ) generate $0 as foo, $1 as bar, $3 as baz;

但我会避免这样做。它很困惑,但它会生成与原始计划相同的解释计划。

关于hadoop - Pig - 如何一步加入和定义模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23080279/

相关文章:

mysql - sqoop导出无法将数据从hive仓库文件夹加载到mysql

mysql - hive 使用从另一个表中选择的内容更新表列

json - 在Hive中将时间戳转换为Hive格式时出错

hadoop - 为特定的M/R作业设置 reducer 容量

hadoop - Pig:访问内部元组的字段进行过滤

hadoop - 将文件加载到Pig中并解压缩

hadoop - pig throw 不兼容类型错误

php - 如何使用 PHP 计算非常大的数据集中的出现次数

java - 真正的大数据如何在数据科学家老死之前导入HDFS?

hadoop - 无法在Spark Streaming作业中获得广播_1的广播_1_piece0