我正在尝试使用Pig从Hive表中读取数据。详情如下:hive版本1.1pig0.12Hadoop2.6.0Cloudera发行版5.4.4Hive表架构:mapyyyyintmmintddintPartitionsareyyyy(int),mm(int),dd(int)pig代码:input_data=LOAD‘dbname.tablename'USINGorg.apache.hive.hcatalog.pig.HCatLoader();input_data_f=FILTERinput_dataBYyyyy==2016ANDmm==7ANDdd==19;rmfinput_data_d
我是pig的新手,正在尝试自学。我编写了一个脚本来获取从words.txt文件中读取的单词的纪元时间。这是脚本。words=LOAD'words.txt'ASword:chararray;B=FOREACHAGENERATECONCAT(CONCAT(A.word,'_'),(chararray)ToUnixTime(CurrentTime());dumpB;但问题是,如果words.txt文件只有一个单词,它会给出正确的输出。如果它有多个词,比如word1word2word3word4然后它给出了以下错误ERROR1066:UnabletoopeniteratorforaliasBj
你好,我有一个目录,其中的子目录类似于a1,a2,..a8.,每个目录都有多个文件,例如bat-a1-0-0bat-a1-0-1bat-a1-1-0bat-a1-1-1...bat-a1-31-0bat-a1-31-1对于子目录a2也是类似的bat-a2-0-0bat-a2-0-1bat-a2-1-0bat-a2-1-1...bat-a2-31-0bat-a2-31-1为了不使事情复杂化,我决定做的是使用多个LOAD语句来加载每个目录,并找到一种UNION方法来获取所有内容。但我不知道如何使用ApachePigversion0.10.0-cdh4.2.1加载每个目录中的文件,因为它们似
PigUDF区分大小写。但是当我将Flatten用作“FLATTEN”或“flatten”时,它正在工作。这意味着展平不是UDF。为什么? 最佳答案 FLATTEN运算符在语法上看起来像一个UDF,但它实际上是一个以UDF所不能的方式改变元组和包的结构的运算符。展平未嵌套的元组和包。思路是一样的,但是对于不同类型的结构,操作和结果是不同的。对于元组,flatten用元组的字段代替元组。例如,考虑一个具有(a,(b,c))形式的元组的关系。表达式GENERATE$0,flatten($1),将导致该元组变为(a,b,c)。对于包来说,
我正在尝试根据其中包含双引号的字符串模式过滤我在pig中的输入。例如,假设input.txt有field1="value1"field2="value2"field1="value1"field2="val2"Iwanttofilteroutlineswhichhasfield2="value2".So,IrunthefollowingscriptA=LOAD'input.txt'ASline:chararray;B=FILTERABYlineMATCHES'.*field2="value2".*';DUMPB;上面的代码片段抛出0条记录。如果我不给出结尾的双引号,它就可以工作B=FI
我需要获得每个性别组的平均年龄...这是我的数据集:01::F::21::000102::M::31::2134503::F::22::3332304::F::18::12305::M::31::14567基本上是这样userid::gender::age::occupationid由于有多个定界符,我在stackoverflow的某个地方读到首先通过TextLoader()加载它loadUsers=LOAD'/user/cloudera/test/input/users.dat'USINGTextLoader()as(line:chararray);testusers=FOREACH
您好,我正在使用Pig在HBASE中移动值。我试图在条件下执行,如果成功我将连接一个值,如果失败我将连接前一行的值。为此,我尝试了以下代码,但它无法正常工作并引发错误。代码:STOCK_A=LOAD'/user/cloudera/pat.hl7'USINGPigStorage('|');data=FILTERSTOCK_ABY($0matches'.*OBR.*'or$0matches'.*OBX.*');MSH_DATA=FOREACHdataGENERATE($0=='OBR'?CONCAT('HL','OBR',(chararray)$1):CONCAT('HL','OBR',(
各位专家好,我有这个数据集:Field_AField_BDATEJohn101-01-2016John105-01-2016Cate105-01-2016Cate401-01-2016Cate605-01-2016Perdi401-01-2016我正在尝试计算每个Field_A的计数(*)并根据字段A和日期创建排名。基本上我想返回这个:Field_ACountRankField_BJohn211John221Cate331Cate344Cate336Perdi154为此,我正在尝试使用以下代码:DATA=load'...'AS(Field_A:Int,FIELD_B:Int,DATE:
我正在努力select*fromAwhereA.IDNOTIN(selectidfromB)(insql)filtersource=FILTERsourceBYIDNOT(destination.ID)如何使用NOTIN子句或其他一些技术来使用pig清除一个表中存在的额外记录 最佳答案 是的,你可以在PIG中这样做:filtersource=FILTERsourceBYNOTIDIN(yourconditionorjoinedfield);例子:HIVE>select*fromtablewhereidNOTIN('1','2','3
我需要使用HBaseStorage从Pig加载到HBase,但我无法弄清楚如何为特定列族加载可变数量的列。(已知数量的列很简单)看起来像这样的数据:(为便于阅读而添加的空格)Id,ItemId,Count,Date1,1,2,2015-02-012,2,2,2015-02-023,1,2,2015-02-03我有一个HBase表,其中包含rowkey和一个名为Attributes的列族。所以我首先加载csv使用:A=LOAD'items.csv'USINGPigStorage(',')as(Id,ItemId,Count:chararray,CreationDate:chararray