【问题标题】:how to load/export CSV/TSV files from Pig to Pandas?如何将 CSV/TSV 文件从 Pig 加载/导出到 Pandas?
【发布时间】:2016-04-26 12:13:11
【问题描述】:

我正在使用 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]。因此,除非我在 read_csv 中使用 skiprows=1(丢失那一行),否则我的数据中会出现这种奇怪的观察结果。

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

非常感谢!

【问题讨论】:

标签: python pandas dataframe apache-pig cloudera


【解决方案1】:

首先你要为-getmerge使用-nl参数:

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
...

所以现在您可以在 pandas 中轻松阅读:

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

【讨论】:

  • 太棒了!但是你知道我应该如何相应地修改我在 PIG 中的STORE 行吗?
  • @Noobie,仅供参考 - 我刚刚更新了我的答案 - 添加了 -nl
  • @Noobie,有帮助吗?
  • @Noobie,很高兴我能帮上忙。 PS我以前从未和PIG玩过,所以这是一个尝试并学习新东西的好机会
猜你喜欢
  • 2012-03-28
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
相关资源
最近更新 更多