从猪出口到CSV

我有很多麻烦,从数据中取出猪,并成为一个CSV,我可以使用Excel或SQL(或R或SPSS等),没有太多的操作…

我试过使用下面的函数:

STORE pig_object INTO '/Users/Name/Folder/pig_object.csv' USING CSVExcelStorage(',','NO_MULTILINE','WINDOWS'); 

它用很多part-m-0000#文件创build该名称的文件夹。 我可以稍后join他们所有使用猫部分*> filename.csv,但没有头,这意味着我必须手动把它。

我读过PigStorageSchema应该创build一个头,但它似乎并没有工作,例如,我得到了相同的结果,如果它只是存储,没有头文件:存储pig_object INTO'/用户/名称/文件夹/ p​​ig_object'USING org.apache.pig.piggybank.storage.PigStorageSchema();

(我已经尝试了在本地和mapreduce模式下)。

有没有什么办法可以将Pig中的数据转换成一个简单的CSV文件,而无需执行多个步骤?

任何帮助将非常感激!

恐怕没有一个工具可以做,但是你可以拿出以下内容(Pig v0.10.0):

 A = load '/user/hadoop/csvinput/somedata.txt' using PigStorage(',') as (firstname:chararray, lastname:chararray, age:int, location:chararray); store A into '/user/hadoop/csvoutput' using PigStorage('\t','-schema'); 

当PigStorage使用 “ -schema ”时,它将在输出目录中创build一个“ .pig_schema ”和一个“ .pig_header ”。 那么你必须合并' .pig_header '和' part-x-xxxxx ':

1.如果结果需要复制到本地磁盘:

 hadoop fs -rm /user/hadoop/csvoutput/.pig_schema hadoop fs -getmerge /user/hadoop/csvoutput ./output.csv 

(由于-getmerge需要一个input目录,你需要首先摆脱.pig_schema

2.将结果存储在HDFS上:

 hadoop fs -cat /user/hadoop/csvoutput/.pig_header /user/hadoop/csvoutput/part-x-xxxxx | hadoop fs -put - /user/hadoop/csvoutput/result/output.csv 

为进一步参考您可能也看看这些post:
STORE输出到单个CSV?
如何将hadoop中的两个文件连接成一个使用Hadoop FS shell的文件?

如果您将数据存储为PigStorage上的PigStorage ,然后使用-getmerge -nl将其合并:

 STORE pig_object INTO '/user/hadoop/csvoutput/pig_object' using PigStorage('\t','-schema'); fs -getmerge -nl /user/hadoop/csvoutput/pig_object /Users/Name/Folder/pig_object.csv; 

文档:

可选地,可以设置-nl以在每个文件的末尾添加换行符(LF)。

您将拥有具有以下结构的单个TSV / CSV文件:

 1 - header 2 - empty line 3 - pig schema 4 - empty line 5 - 1st line of DATA 6 - 2nd line of DATA ... 

所以我们可以使用AWK简单地删除行[2,3,4]

 awk 'NR==1 || NR>4 {print}' /Users/Name/Folder/pig_object.csv > /Users/Name/Folder/pig_object_clean.csv 
Interesting Posts