我从Stack Overflow收集了大量数据,这是通过使用数据资源管理器查询数据库获得的。
我正在将数据加载到HDFS中,我想使用pig从特定列的每一行中删除所有HTML标记。
在加载数据之前,我尝试了一个Ctrl F并替换了所有"< *>"用""但Excel无法为250000行数据执行此操作并崩溃。
我怎么能在PIG中这样做,到目前为止这是我所拥有的并不是很多:
StackOverflow = load 'StackOverflow.csv' using PigStorage(',');
noHTML = FOREACH StackOverflow REPLACE(%STRING%, '<*>', '""')
我可以在%String%中使用什么参数来告诉PIG为每一行执行此操作?
答案 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