草庐IT

hadoop - 为什么会有 Pig 和 Hive

我了解Hadoop的组件是什么,但我的问题是:作为最终用户,我如何才能在不担心数据存储的情况下访问Hadoop中的文件?那么在使用Pig/Hive命令时,我应该担心数据存储是HDFS还是HBase?谢谢 最佳答案 首先,HDFS是一个文件系统,而HBase是一个数据库,所以是的,您应该考虑到这一点,因为您访问它们的方式不同。知道这一点后,Pig和Hive让您比在纯Java中更容易访问数据。例如,Hive允许您以接近SQL的方式查询HBase。同样,您可以像在标准机器上使用shell一样使用pig浏览和管理文件。总而言之,您不应该担心

hadoop - 优化 pig 脚本

我正在尝试生成聚合输出。问题是所有数据都将发送到单个reducer(过滤器和计数会产生问题)。如何优化以下脚本?预期输出:组,10,2,12,34...data=LOAD'/input/useragents'USINGPigStorage('\t')AS(Col1:chararray,Col2:chararray,Col3:chararray,col4:chararray,col5:chararray);grp1=GROUPdataBYUAPARALLEL50;fr1=FOREACHgrp1{fltrCol1=FILTERdataBYCol1=='Other';fltrCol2=FIL

hadoop - 在本地或 mapreduce 模式下运行 pig 时出现问题

我已经在我的Ubuntu虚拟机上运行了Hadoop1.2,它在Windows7机器上运行。我最近在同一个UbuntuVM上安装了Pig0.12.0。我已经从apache网站下载了pig-0.12.0.tar.gz。我已经正确设置了所有变量,例如JAVA_HOME、HADOOP_HOME、PIG_HOME变量。当我尝试以本地模式启动pig时,这是我看到的:chandeln@ubuntu:~$pig-xlocalpig:invalidoption--'x'usage:pigchandeln@ubuntu:~$echo$JAVA_HOME/usr/lib/jvm/java7chandeln@

hadoop - Pig 简单转储功能

我的输入文件如下。我正在尝试转储相关的加载数据。我正在使用pig0.12。a,t1,1000,100a,t1,2000,200b,t2,1000,200b,t2,5000,100我是输入pig进入HDFS模式myinput=LOAD'file'AS(a1:chararray,a2:chararray,amt:int,rate:int);如果我转储我的输入然后它显示以下错误。描述、说明效果很好..所以dumpmyinput;只要我输入转储命令,我就会收到以下错误消息。ERRORorg.apache.hadoop.ipc.RPC-FailoverProxy:FailingthisCall:

sql - Hive 和 Pig 中的不平等加入

我正在开始一个项目,我需要做一些不平等的加入。现在,我读到Pig和Hive都不支持不等式Join。我还读到Pig可以通过使用CROSS和FILTER来支持它。我也可以在Hive中使用WHERE子句来做到这一点吗?是否存在不可能的情况?最后,假设我可以在Pig和Hive中都做到这一点,哪个性能更好? 最佳答案 我记得Hive只能用一个reducer做“CROSS”。Pig使用一种智能的方法来实现“CROSS”并并行运行它,它通常比Hive具有更好的性能。顺便说一句,我已经一年没有更新关于Hive和Pig的知识了。我不确定Hive在过去

hadoop - 如何在 pig 中使用字符串函数

我正在尝试使用其中一个内置函数将字符串转换为pig中的大写字母。我在本地模式下使用pig。emps.csv1,John,35,M,101,50000.00,03/03/792,Jack,30,F,201,3540000.00,09/10/84加载数据的命令(WORKSFINE)empdata=load'emps.csv'usingPigStorage(',')as(id:int,name:chararray,age:int,gender:chararray,deptId:int,sal:double);dumpempdata转换为大写并打印(错误失败)empnameucase=fore

hadoop - PIG 和 HIVE 连接到运行大量 map 的 Datastax Cassandra

我正在使用DSE3.2.4我创建了三个表,其中一个表有1000万行,另一个表有50k行,其他表只有10行当我对这些表运行一个简单的PIG或Hive查询时,它会为这两个表运行相同数量的映射器。在Pig中,默认情况下pig.splitCombination是true其中它只运行一个map如果我将其设置为false,它现在运行513张map。在Hive中默认运行513个映射我尝试设置以下属性mapred.min.split.size=134217728in`mapred-site.xml`nowrunning513mapsforall在pigshell中设置pig.splitCombinat

hadoop - Oozie Pig Action 更改作业 jar 的 Guava 依赖性

如何配置ooziepig操作以优先考虑user.classpath?pig版本0.10.0-cdh4.2.1都试过了mapreduce.task.classpath.user.precedencemapreduce.task.classpath.firstmapreduce.job.user.classpath.firstmapreduce.user.classpath.first作为pig操作配置设置的一部分。mapreduce.job.user.classpath.firsttrue但它们似乎都不起作用。问题是pig(不知何故)依赖于Guava11而我的工作依赖于Guava13。我

hadoop - 如何在 Pig 中进行分组时消除标识符

我有10个数据集要加入。当我使用cogroup时,我得到的是下面(50637,22284),{(50637,22284,278)},{(50637,22284,308)},{},{},{},{},{},{(50637,22284,17)},{(50637,22284,5)},{(50637,22284,1)}正如所见,分组标识符在每个括号中重复。如何获得以下格式的输出?(50637,22284,278,308,0,0,0,0,0,17,5,1) 最佳答案 使用FOREACH/GENERATE选择您要保留的字段。参见http://pi

hadoop - 如何在 PIG 脚本中将 Columns 本身作为参数传递

在我的PIG脚本中,我想将列位置作为参数传递,请告诉我如何实现这一点a=load'$path'usingPigStorage('');b=groupaby$CountColPos;c=foreachbgenerategroup,COUNT(a);d=ORDERcby$0;STOREdINTO'$TempCountDir';这里如何使用逗号中的-p选项传递$CountColPos的值 最佳答案 这对我有用:$pig-p\$0脚本.pig您需要转义美元符号,以便shell不会将其视为环境变量。