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

Apache pig 从CSV中的数千行中删除HTML标记,apache-pig,hdfs,Apache Pig,Hdfs,我从堆栈溢出中收集了大量数据,这些数据是通过使用data explorer查询数据库获得的 我正在将数据加载到HDFS中,我想使用pig从某个列的每一行删除所有HTML标记 在加载数据之前,我尝试了Ctrl-F并用“”替换所有“”,但Excel无法对250000行数据执行此操作,因此崩溃 我怎样才能在猪身上做这件事,到目前为止,我所拥有的并不多: StackOverflow = load 'StackOverflow.csv' using PigStorage(','); noHTML = FO

我从堆栈溢出中收集了大量数据,这些数据是通过使用data explorer查询数据库获得的

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

在加载数据之前,我尝试了Ctrl-F并用“”替换所有“”,但Excel无法对250000行数据执行此操作,因此崩溃

我怎样才能在猪身上做这件事,到目前为止,我所拥有的并不多:

StackOverflow = load 'StackOverflow.csv' using PigStorage(',');
noHTML = FOREACH StackOverflow REPLACE(%STRING%, '<*>', '""') 
StackOverflow=使用PigStorage(',')加载“StackOverflow.csv”;
noHTML=FOREACH StackOverflow REPLACE(%STRING%,“”“”)

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

还有很多其他方法。在word文件中尝试这样做没有帮助。你需要文字处理。您可以使用perl来实现这一点。最聪明的方法是使用Unix/Linux工具,如sed、grep等

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

您必须引用需要修改的列数据。假设您有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=使用PigStorage(',)加载“StackOverflow.csv”
noHTML=FOREACH StackOverflow生成$0,将($1,,'')替换为f2_new,$1;
转储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; 
StackOverflow=使用PigStorage(',')加载“StackOverflow.csv”,如(f1:chararray,f2:chararray,f3:chararray);
noHTML=FOREACH StackOverflow生成f1,将(f2,,'')替换为f2_new,f3;
转储noHTML;