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(',')。