从PIG中的CSV中的数千行中删除HTML标记

时间:2016-03-16 23:43:03

标签: apache-pig hdfs

我从Stack Overflow收集了大量数据,这是通过使用数据资源管理器查询数据库获得的。

我正在将数据加载到HDFS中,我想使用pig从特定列的每一行中删除所有HTML标记。

在加载数据之前,我尝试了一个Ctrl F并替换了所有"< *>"用""但Excel无法为250000行数据执行此操作并崩溃。

我怎么能在PIG中这样做,到目前为止这是我所拥有的并不是很多:

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

我可以在%String%中使用什么参数来告诉PIG为每一行执行此操作?

2 个答案:

答案 0 :(得分:1)

您必须引用需要修改的列数据。假设您有3列,并且您想要替换第2列中的html标记,您将使用以下脚本。$ 1引用第2列< / p>

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; 

答案 1 :(得分:0)

还有很多其他方法可以做到。尝试在word文件中执行此操作无济于事。你需要文字处理。您可以使用perl来执行此操作。你能做到的最聪明的方法是使用像sed,grep等Unix / Linux工具。

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