草庐IT

hadoop - 设置 Pig 作业的最小 reducer 数量

我想为我的PigJob设置要启动的最小reducer数量。我尝试使用:SETdefault_parallel57;但是,这会强制所有作业都必须有57个reducer。是否有任何我可以设置的设置强制PigJob具有至少57个或更多的reducer。 最佳答案 我认为这是不可能的。您可以将default_parallel设置为57,对于那些您希望拥有更多reducer的操作,您可以使用PARALLEL指定更高的数量。我知道这并不是您想要的。 关于hadoop-设置Pig作业的最小reduce

hadoop - 一台机器上的 pig

想象一下,我有一个包含100MM记录的文件,我想用pig来处理它。我没有集群,但出于生产力原因,我仍然想使用PIG。我可以在单机上使用PIG吗?否则它的性能会很差吗?Pig会在单台机器上模拟MR作业,还是会使用自后端引擎来执行该流程? 最佳答案 当然,由Hadoop处理100MM记录的单台机器不会给您带来性能。出于开发/测试目的,您可以使用具有少量/中等数据量的单机,但不能用于生产。当您向集群中添加更多节点时,Hadoop会线性扩展其性能。单机也可以做集群。PIG可以在2种模式下运行,local和mapreduce。在本地模式下,没

python - 以文本文件和 oracle 表为源,Hive 或 Pig 或 Python Mapreduce 哪个能提供最佳性能?

我有以下要求,对选择哪一个以获得高性能感到困惑。我不是Java开发人员。我对Hive、Pig和Python很满意。我正在使用带有tez引擎的HDP2.1。数据源是文本文件(80GB)和Oracle表(15GB)。两者都是结构化数据。我听说Hive将适用于结构数据,Pythonmapreducestreaming概念也将比hive&Pig具有更高的性能。请说清楚。我正在使用Hive,原因是:需要基于一列加入这两个来源。数据量大,使用ORC格式表存储join结果文本文件名将用于生成一个输出列,并且已使用虚拟列概念input__file__name字段执行。加入后需要对每一行做一些算术运算,

java - 在单列上应用 Pig UDF 并自动生成所有其他列

我有一个PigUDF,可将我的管道分隔数据文件中的Ebcidic字符转换为ASCII。我有数百列,我希望我的UDF应用于第70列。我如何在该特定列上应用UDF并将列数据替换为数据集中的ASCII。REGISTERpigudf-0.0.1.jar;DEFINEEbc2Asccom.z.pig.udf.Ebc2Asc;A=LOAD'/user/T4/cobDump.txt'USINGPigStorage('|');B=FOREACHAGENERATEEbc2Asc($71)astxt:chararray;DUMPB;如果我们像上面那样调用脚本,我只会得到转换后的列作为结果的一部分。如何获取

hadoop - 有人可以解释 pig 身上的这个奇怪错误吗

我在pig中使用宏,但它抛出一个错误提示:未定义的别名“result_1”。我正在使用的宏:definemacro_result(source,metric_name,metric_value)returnsresult_metric{result_1=foreach$sourcegeneratetimestamp,member_skasid,'$metric_name'asminor_metric,'Lts_seo'asmajor_metric,$metric_valueasvalue;$result_metric=result_1;};我将宏称为:page_views_to_jse

hadoop - PIG Latin 中的 JOIN 条件

SQLSELECTm.x,m.y,n.a,n.bfrommydata1m,mydata2nWHEREm.x=n.aANDm.y>=n.ypigA=LOAD'mydata1'AS(x:int,y:datetime);B=LOAD'mydata2'AS(a:int,b:datetime);我现在需要使用上述sql条件连接两个表。我将如何使用连接条件在PIG中实现上述逻辑? 最佳答案 试试这个:A=LOAD'mydata1'AS(x:int,y:datetime);B=LOAD'mydata2'AS(a:int,b:datetime);C

hadoop - 使用 oozie 调用 pig - org.apache.pig.Main 退出代码 [2]

我正在尝试在Oozie中调用Pig操作,并且我正在处理以下内容-Ooziev3.3.2Pigv0.12.1-maprHadoopv1.0.3maprM5我现在可以使用Oozie调用java操作。但是,当我尝试调用Pig操作时,它失败了,但并没有透露太多-[Map/Reducefailed,errormessage[${wf:errorMessage(wf:lastErrorNode())}]],afterresolve[Map/Reducefailed,errormessage[Mainclass[org.apache.oozie.action.hadoop.PigMain],exit

sql - 为什么 A 和 B 的内部连接比 Pig 中的 A 或 B 产生更多的结果?

我的理解是,内部连接应该采用具有相同键的A和B的交集,因此交集中的结果数永远不应超过A或B。但是,我运行了一个pig脚本,它默认情况下应该执行内部联接,这表明交集中的结果多于A或B。这可能是什么原因造成的?OLD_count=FOREACH(GROUPOLDALL)GENERATECOUNT(OLD);NEW_count=FOREACH(GROUPNEWALL)GENERATECOUNT(NEW);G=JOINNEWBY(X,Y),OLDby(X,Y);JOIN_count=FOREACH(GROUPGALL)GENERATECOUNT(G);DUMPOLD_count;DUMPNEW

hadoop - Apache pig : How to load a sequence file which is stored in hdfs?

我的序列文件直接存储在hdfs例如:grunt>lsgrunt>ls/blablahdfs://namenode1:54310/blabla/0411f03a-db7f-48d0-9542-5203304e3e81.seq185284523hdfs://namenode1:54310/blabla/05be8fc0-e967-42e1-b76a-0d7108a69d17.seq201489688hdfs://namenode1:54310/blabla/06222427-519c-49c0-bbbf-49a9f43bbd13.seq196858576hdfs://namenode1:5

hadoop - 如何使用多个 ctrl 分隔符在 pig 中加载数据

我在pig中加载一个文件,分隔符为'^A^E^A'我尝试了以下命令,但它不起作用。data=LOAD'test.txt'USINGPigStorage('\u0001\u0005\u0001')AS(user,time,query);我错过了什么吗?或者有没有办法直接使用PigStorage指定上述分隔符?怎么办?谢谢。 最佳答案 加载数据为line:chararray将“\u0001\u0005\u0001”替换为“|”或','使用“|”分割结果行或','以生成所需的列。data=LOAD'test.txt'as(line:cha