Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache pig 如何在pig中执行此逗号分隔列表?_Apache Pig - Fatal编程技术网

Apache pig 如何在pig中执行此逗号分隔列表?

Apache pig 如何在pig中执行此逗号分隔列表?,apache-pig,Apache Pig,假设数据集包含两个字段:字段、提问时间 fields question time php,error,gd,image-processing 1235000501 php,error,gd,image-processing 1235000551 lisp,scheme,subjectiv

假设数据集包含两个字段:字段、提问时间

            fields                                 question time

php,error,gd,image-processing                               1235000501
php,error,gd,image-processing                               1235000551 
lisp,scheme,subjective,clojure                              1235000177
lisp,scheme,subjective,clojure                              1235001545
lisp,scheme,subjective,clojure                              1235002457
lisp,scheme,subjective,clojure                              1235002809
lisp,scheme,subjective,clojure                              1235003266
lisp,scheme,subjective,clojure                              1235007817
lisp,scheme,subjective,clojure                              1235007913
lisp,scheme,subjective,clojure                              1235020626
lisp,scheme,subjective,clojure                              1235040652
我尝试了下面的代码

DEFINE UnixToISO org.apache.pig.piggybank.evaluation.datetime.convert.UnixToISO();
A= LOAD '/user/home/book3.csv' using PigStorage() as (fields:chararray,question time:long);
B= foreach A generate fields,UnixToISO(question time * 1000 ) as temp;
DUMP B;
没有与输入相同的更改

C= foreach B generate fields, ToDate(temp) as date_time;
DUMP C;
D= foreach C generate fields, GetHour(date_time) as hour;
DUMP D;
没有与输入相同的更改

C= foreach B generate fields, ToDate(temp) as date_time;
DUMP C;
D= foreach C generate fields, GetHour(date_time) as hour;
DUMP D;

没有与输入相同的更改。我的代码中有什么错误

我认为示例数据的格式不正确。请检查分隔两列中数据的分隔符。我获取了示例数据,删除了列数据之间的空格,并将其替换为单个选项卡。这样,我可以加载两列数据,提取时间戳并获取小时。 请参阅下面的脚本和输出

脚本

A = LOAD 'test4.txt' using PigStorage('\t') AS (fields:chararray,question_time:long);
B = foreach A generate fields,ToDate(question_time * 1000 ) as temp;
C = foreach B generate fields, GetHour(temp) as hour;
DUMP C;


谢谢你的帮助。。我有疑问,当我作为csv文件加载上述我的问题,我的代码没有工作。但是,当我保存为文本(以制表符分隔)并加载到HDFS中时,您的代码可以正常工作。。于是,我得到了答案。为什么会这样?你们能解释一下定界符的用法吗?虽然我的代码流还可以,但我在加载部分时出错了。任何可能避免这种情况的想法或预防措施。。提前谢谢。自从我用tab替换了所有空格后,我就使用tab作为分隔符。所以在使用PigStorage的load语句中,我使用了tab。i、 e.PigStorage('\t'),如果文件是空间增量文件,则使用PigStorage('')。如果是逗号文件,则使用PigStorage(',')。