2016-04-26 12 views
1

私はいくつかのデータを処理するためのApache PIGを使用していますし、私のスクリプトの終わりに私は私がパンダにread_csv(headers=0)で読めるtsvファイルを持っている方法PigからPandasにCSV/TSVファイルをロード/エクスポートする方法は?

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

を使用しています。最初の仮定

col1    col2  col3  
{pigschema}0  1   2  

問題はtsvファイルは現在(いいです)1行目のヘッダだけでなくなどの2行目の最初の観測に連結スキーマが含まれていることです行は[0,1,2]です。だからread_csv(その行を失う)でskiprows=1を使用しない限り、私は私のデータでこの奇妙な観測を取得します。

ヘッダーを取得しているうちに、データをエクスポートするより良い方法があるのだろうかと思います。

多くの感謝!あなたが-getmergeため-nlパラメータを使用するすべての

+1

は役に立つかもしれます。http:// stackoverflowの.com/questions/13696036/export-from-pig-to-csv –

+0

ありがとう!リンクがかなり古くなっているので、今より良い解決策があることを願っています –

+0

また、私はパンダにロードして正しいヘッダを得ることができる限り、フォーマット(CSVまたは他のJSON)を気にしません –

答えて

2

まず:

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]) 
+0

優れています!しかし、それに応じてPIGの私の 'STORE'行をどのように修正すべきか知っていますか? –

+0

大変ありがとうございましたmaxuさん、これをできるだけ早くお試しください。 –

+1

@Noobie、FYI - 私はちょうど私の回答を更新しました。-nlを追加しました。 – MaxU

関連する問題