草庐IT

hadoop - 在 Apache pig 工作中获取今天的日期

我想在我的一项假定每天运行的Pig作业的输出文件路径中使用今天的日期,有没有办法做到这一点。就像是/user/x/$todaysDate 最佳答案 通过bash执行此操作:echo'/user/x/'`date+%Y-%m-%d`给出:/user/x/2012-10-14因此,您可以将脚本执行为:$pig-paramoutpath='/user/x/'`date+%Y-%m-%d`myscript.pig然后,在您的STORE命令中,使用$outpath:STOREabcINTO'$outpath';

hadoop - 双冒号在 Pig 中到底是什么意思?

当我使用DESCRIBE时,我在Pig输出中看到很多双冒号,但它们的含义并不明显。例如,在分组和展平之后,我看到类似这样的内容:key::observerId:chararray,key::endpoint:chararray,...在某些时候,我按observerId和端点分组,将组元组重命名为“键”,然后重新展平。那么,双冒号到底是什么意思,我应该如何引用第一个关系(key?observerId?) 最佳答案 在您的问题中,::是消除歧义的运算符,它用于在JOIN、COGROUP、CROSS或FLATTEN运算符之后识别字段名称

hadoop - 使用 Hadoop 配置 Pig 关系

我无法理解Hadoop和Pig之间的关系。我了解Pig的目的是将MapReduce模式隐藏在脚本语言PigLatin的背后。我不明白的是Hadoop和Pig是如何联系在一起的。到目前为止,唯一的安装过程似乎假定pig与主hadoop节点在同一台机器上运行。事实上,它使用了hadoop配置文件。这是因为pig只将脚本翻译成mapreduce代码并将它们发送到hadoop吗?如果是这样,我该如何配置Pig才能将脚本发送到远程服务器?如果不是,是否意味着我们总是需要在pig中运行hadoop? 最佳答案 Pig可以在两种模式下运行:本地模

hadoop - 将字符串连接到 pig 中的字段

我想将一个字符串concat到一个字段中的所有数据?示例数据集mydata包含以下字段(id,name,email)我想为字段名称中的所有数据添加字符串测试前缀。我试过了a=load'mydata.csv'as(id,name,email);b=foreachagenerateid,concat('test',chararray(name));我得到的结果是空的有什么想法吗? 最佳答案 在pigconcat中,关键字应该是大写字母而不是小写字母。您需要将关键字concat更改为CONCAT。您正在加载一个带有默认分隔符(制表符)的C

hadoop - 使用 loadfunc pig UDF 将 protobuf 格式文件加载到 pig 脚本中

我对pig知之甚少。我有protobuf格式的数据文件。我需要将此文件加载到pig脚本中。我需要编写一个LoadFuncUDF来加载它。说函数是Protobufloader()。我的PIG脚本是A=LOAD'abc_protobuf.dat'USINGProtobufloader()as(name,phonenumber,email);我只想知道如何获取文件输入流。一旦我掌握了文件输入流,我就可以将数据从protobuf格式解析为PIG元组格式。PS:提前致谢 最佳答案 Twitter的开源库elephantbird有很多这样的加载

Hadoop Pig ISO 日期到 Unix 时间戳

我在Pig中有一个项目列表,由ISO8601(YYYY-MM-DD)格式的日期字符串组成:(2011-12-01)(2011-12-01)(2011-12-02)除了在Java中实现我自己的函数之外,还有什么方法可以将这些项目转换为UNIX时间戳? 最佳答案 你需要一个UDF来做那件事=好消息它已经完成了。Pig还带有“piggybank"社区贡献的UDF,包括dateconvert 关于HadoopPigISO日期到Unix时间戳,我们在StackOverflow上找到一个类似的问题:

java - Apache Pig - 具有多个匹配条件的 MATCHES

我正在尝试采用逻辑匹配标准,例如:(("Foo"OR"FooBar"ORFooBar)AND("test"OR"testA"OR"TestB"))ORTestZ并将其应用为与pig中的文件匹配result=filterinputfieldsbytextmatches(someregexexpressionhere));问题是我不知道如何将上面的逻辑表达式转换为matches方法的正则表达式。我摆弄过各种各样的东西,我最接近的是这样的:((?=.*?\bFoo\b|\bFooBar\b))(?=.*?\bTestZ\b)有什么想法吗?如果可能,我还需要尝试以编程方式进行此转换。一些例子:

hadoop - 可以使用 PIG 读取的文件格式

使用PIG可以读取哪些文件格式?如何以不同的格式存储它们?假设我们有CSV文件,我想将其存储为MXL文件,该怎么做?每当我们使用STORE命令时,它都会创建目录并将文件存储为part-m-00000如何更改文件名并覆盖目录? 最佳答案 whatkindoffileformatscanbereadusingPIG?howcanistorethemindifferentformats?有几个built-inloadingandstoringmethods,但它们是有限的:BinStorage-“二进制”存储PigStorage-加载和存

java - Apache Pig : unable to run my own pig. jar 和 pig-withouthadoop.jar

我有一个运行Hadoop0.20.2和Pig0.10的集群。我有兴趣向Pig的源代码添加一些日志,并在集群上运行我自己的Pig版本。我做了什么:使用'ant'命令构建项目得到了pig.jar和pig-withouthadoop.jar将jar复制到集群名称节点上的Pig主目录运行作业然后我得到以下标准输出:2013-03-2506:35:05,226[main]WARNorg.apache.pig.backend.hadoop20.PigJobControl-fallingbacktodefaultJobControl(notusinghadoop0.20?)java.lang.NoS

hadoop - pig : Force one mapper per input line/row

我有一个PigStreaming作业,其中映射器的数量应等于输入文件中的行数。我知道那个设定setmapred.min.split.size16setmapred.max.split.size16setpig.noSplitCombinationtrue将确保每个block为16个字节。但是我如何确保每个map作业都只有一行作为输入?这些行的长度是可变的,因此对mapred.min.split.size和mapred.max.split.size使用常量不是最佳解决方案。这是我打算使用的代码:input=load'hdfs://cluster/tmp/input';DEFINECMD`