如何将CSV / TSV文件从Pig加载/导出到Pandas?

时间:2016-04-26 12:13:12

标签: python pandas dataframe apache-pig cloudera

我使用Apache PIG处理一些数据,在我的脚本末尾我使用

store data into  '/mypath/tempp2' using PigStorage('\t','-schema');
fs -getmerge /mypath/tempp2  /localpath/data.tsv;

这样我就有一个tsv文件,我可以在Pandas中使用read_csv(headers=0)阅读。

问题是tsv文件现在包含第一行的标题(这很好),但是连接到第二行中第一个观察的模式,例如:

col1             col2      col3     
{pigschema}0     1         2      

假设第一行是[0,1,2]。因此,除非我在skiprows=1中使用read_csv(丢失该行),否则我的数据中会出现这种奇怪的观察结果。

所以我想知道在获取标题时是否有更好的方法来导出我的数据。

非常感谢!

1 个答案:

答案 0 :(得分:2)

首先,您要对-nl使用-getmerge参数:

store data into  '/mypath/tempp2' using PigStorage('\t','-schema');
fs -getmerge -nl /mypath/tempp2  /localpath/data.tsv;

Docs:

  

可选择-nl可以设置为启用添加换行符(LF)   每个文件的结尾。

然后您将在/localpath/data.tsv以下结构中使用

0 - headerline
1 - empty line
2 - PIG schema
3 - empty line
4 - 1-st line of DATA
5 - 2-nd line of DATA
...

所以现在你可以在熊猫中轻松阅读:

df = pd.read_csv('/localpath/data.tsv', sep='\t', skiprows=[1,2,3])