草庐IT

hadoop - Pig HbaseStorage 自定义

如何为pig脚本自定义HbaseStorage?实际上我想在将数据加载到pig脚本之前对数据执行一些业务逻辑。它类似于HbaseStorage之上的自定义存储。例如,我的行键具有类似A_B_C的结构。目前,我在我的pig脚本中传递HbaseStorage中的A_B_C键,但我想在将输入数据提供给实际的pig脚本之前针对A_B_C_D等键执行一些逻辑,如过滤等。怎么可能 最佳答案 您可能不得不查看HBaseStoragejava类并基于它实现您自己的类。根据HBaseStorage和相关类的编写方式,这可能很容易(只需扩展HBaseS

Hadoop Pig 一行包含多条记录

目前,我得到一个逐行处理的数据文件,大部分行包含我需要的一条记录,例如:id,name,total但有些行包含多个记录,例如:id1,name1,total1,id2,name2,total2我编写了加载函数,并尝试返回由元组列表组成的元组。但是我不知道如何处理如下数据?((id1,name1,total1),(id2,name2,total2))...另一个问题是关于loadfun的,如果我发现某行包含无效值,我应该返回一个空元组还是将行读取器设置为下一行?谢谢。 最佳答案 我有一个解决方案,就是定义我自己的加载或存储。对于加载,

hadoop - 如何使用 pig 以 RC 格式存储分区数据?

我想知道是否有UDF或其他东西可以以RC格式以分区方式存储我的数据。我知道有org.apache.pig.piggybank.storage.MultiStorage但它只对某些压缩格式有效。我想以RC格式存储我的数据,但使用MultiStorage提供的相同分区存储结构。谢谢,伊姆蒂亚兹 最佳答案 piggybank或其他替代方案都没有这样的解决方案。我遇到过类似的问题。但由于其他一些要求而放弃了实现。唯一可用的解决方案是扩展MultiStorageudf以提供RC存储格式。Twitter已开源其RC文件存储。你可以从中得到帮助。

hadoop - Pig - 如何只从列表中选择一些值(不仅仅是简单的不同)?

假设我有intput_file.txt(user_id、event_code、event_date):1,a,11,b,22,a,32,b,42,b,52,b,62,c,72,b,8如你所见,user_id=2,有这样的事件:abbbcb我想要这样的结果:1,{(a,1),(b,2)}2,{(a,2),(b,6),(c,7),(b,8)}所以当我们有几个事件时,使用相同的代码,我想只处理最后一个。你能分享一些提示吗?问候帕维尔 最佳答案 您描述的主要内容是GROUPBY的作用。在这种情况下:B=GROUPABYuser_id;通过u

hadoop - 添加并行选项使 Pig 中的作业失败

我是Pig的新手,正在尝试在我们的5节点Hadoop集群上运行以下PigScript。以下脚本为我提供了关系中两列的集合交集register'/home/workspace/Pig/setIntersecUdf.jar';defineIntercom.cs.pig.SetIntersection();a=load'/home/pig/pig-0.12.0/input/location.txt'as(location:chararray);b=load'/home/pig/pig-0.12.0/input/location.txt'as(location:chararray);c=CRO

hadoop - 启动 Pig 时出错

我在我的Hadoop系统上配置了Pig,但是当我启动它时,我收到了与log4j相关的错误。我错过了什么吗?谢谢!$piglog4j:ERRORCouldnotinstantiateclass[org.apache.hadoop.log.metrics.EventCounter].java.lang.ClassNotFoundException:org.apache.hadoop.log.metrics.EventCounteratjava.net.URLClassLoader$1.run(URLClassLoader.java:217)atjava.security.AccessCon

hadoop - Pig Latin - 从不同的袋子中增加值(value)?

我有一个文件max_rank.txt包含:1,a2,b3,c和第二个文件max_rank_add.txt:def我的预期结果是:1,a2,b3,c,4,d,5,e6,f所以我想为第二组值生成RANK,但从大于第一组最大值的值开始。脚本的开头可能是这样的:existing=LOAD'max_rank.txt'usingPigStorage(',')AS(id:int,text:chararray);new=LOAD'max_rank_add.txt'usingPigStorage()AS(text2:chararray);ordered=ORDERexistingbyiddesc;lim

hadoop - 使用 pig 在hbase中批量加载

我在HDFS中有一个日志文件需要解析并放入Hbase表中。我想使用PIG来做到这一点。我该怎么做。Pig脚本应该解析日志,然后放入Hbase? 最佳答案 pig脚本是(假设制表符是您在日志文件中的数据分隔符):A=load'/home/log.txt'usingPigStorage('\t')as(one:chararray,two:chararray,three:chararray,four:chararray);STOREAINTO'hbase://table1'USINGorg.apache.pig.backend.hadoo

java - PIG : Cannot cast java. lang.String to org.apache.avro.util.Utf8 with AvroStorage inside STORE

我正在使用ApachePIG来减少最初以CSV格式存储的数据,并希望以Avro格式输出。我的PIG脚本的一部分调用了一个javaUDF,它将一些字段附加到输入元组并将修改后的元组传回。执行此操作时,我正在修改输出、PIG、架构:SchemaoutSchema=newSchema(input).getField(1).schema;SchemarecSchema=outSchema.getField(0).schema;recSchema.add(newFieldSchema("aircrafttype",DataType.CHARARRAY));在我的UDF的publicSc​​hem

join - hadoop pig自连接性能

我有一个用户和元素的数据集,我想在其中找到至少有一个重叠元素的任何一对用户。我的数据结构如下:idelement--------------1a1b1b2b3a4c在这种情况下,我将生成以下元组:(1,2)//bothhaveelement"b"incommon(1,3)//bothhaveelement"a"incommon我已经编写了以下小规模工作的pig脚本,但是当我什至有100万行(~500MB)时,我在1.5小时后就终止了这项工作,因为它生成了将近40GB的数据,这似乎有点过时了与我想要完成的事情成比例。我是pig的新手,所以我希望可以对此进行一些优化。任何帮助将不胜感激。-