从pig导出为CSV

Sax*_*ore 10 csv excel apache-pig

我很难从猪中获取数据并将其转换为CSV,我可以在Excel或SQL(或R或SPSS等)中使用,而无需大量操作......

我尝试过使用以下功能:

STORE pig_object INTO '/Users/Name/Folder/pig_object.csv'
    USING CSVExcelStorage(',','NO_MULTILINE','WINDOWS');
Run Code Online (Sandbox Code Playgroud)

它创建了具有该名称的文件夹,其中包含许多part-m-0000#文件.我以后可以使用cat part*> filename.csv加入它们,但是没有标题,这意味着我必须手动放入它.

我已经读过PigStorageSchema应该创建另一个带有标题的位但它似乎根本不起作用,例如,我得到的结果就好像它刚刚存储一样,没有头文件:STORE pig_object INTO'/ Users /名称/文件夹/ p​​ig_object'使用org.apache.pig.piggybank.storage.PigStorageSchema();

(我在本地和mapreduce模式下都试过这个).

有没有办法将Pig中的数据导入一个简单的CSV文件而没有这些多个步骤?

任何帮助将非常感激!

Lor*_*dig 31

我担心没有一个单行代表可以完成这项任务,但你可以提出以下内容(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');
Run Code Online (Sandbox Code Playgroud)

PigStorage接受' -schema'它将在输出目录中创建一个' .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
Run Code Online (Sandbox Code Playgroud)

(因为-getmerge你需要先输入一个输入目录.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
Run Code Online (Sandbox Code Playgroud)

如需进一步参考,您还可以查看以下帖子:将
输出存储到单个CSV?
如何使用Hadoop FS shell将hadoop中的两个文件连接成一个?