2016-03-16 87 views
0

我有一個來自Stack Overflow的大量數據,它是通過使用數據瀏覽器查詢數據庫而獲得的。在PIG中從CSV中的數千行中刪除HTML標記

我正在將數據加載到HDFS中,並且我想使用pig刪除某列中每一行的所有HTML標記。

在加載數據之前,我嘗試了一個Ctrl F並用「」替換所有「< *>」,但Excel無法爲250000行數據執行此操作並崩潰。

我怎麼能去養豬這樣做,到目前爲止,這是我這是不是有很多:

StackOverflow = load 'StackOverflow.csv' using PigStorage(','); 
noHTML = FOREACH StackOverflow REPLACE(%STRING%, '<*>', '""') 

我可以在%字符串%使用什麼參數告訴PIG,爲做到這一點每一行?

回答

0

你必須指的是所需要的列數據被mo​​dified.Assuming你有3列,你會想替換第2列的html標籤,你可以使用下面的腳本。$ 1指的是第2列

StackOverflow = load 'StackOverflow.csv' using PigStorage(',') 
noHTML = FOREACH StackOverflow GENERATE $0,REPLACE($1, '<*>', '') as f2_new,$1; 
DUMP noHTML;  

,或通過使用列名

StackOverflow = load 'StackOverflow.csv' using PigStorage(',') as (f1:chararray,f2:chararray,f3:chararray); 
noHTML = FOREACH StackOverflow GENERATE f1,REPLACE(f2, '<*>', '') as f2_new,f3; 
DUMP noHTML; 
0

有很多其他的方式可以做到這一點。試圖用word文件做這件事不會有幫助。你需要文字處理。你可以使用perl來做到這一點。你可以做它使用Unix/Linux工具,像sed最聰明的方式,用grep等

sed -i -e 's/<string you want to delete>/""/g' filename