Pig脚本用于替换列中的任何类型的换行符

时间:2016-10-09 14:10:37

标签: apache-pig

我使用pig脚本从CSV中删除了一些列:

Cleaned = FOREACH data generate  $0 .. $8,$11 .. $27, $31 .. $41, $45 .. $97, $99 .. $111;

在我保留的列中,我需要删除任何可能损坏hive中数据的新行字符。无论是\n还是\r\r\n还是<br>。由于它是用户输入的数据,我相信使用回车键输入数据时创建的换行符将是上面提到的字符之一,如果您还可以指定它转换为什么但是我需要制作的大部分内容,我将不胜感激。确保从数据中删除任何类型的换行符,以确保hive CSV Parser正确映射我的数据。如何在我用来过滤掉列的猪脚本中执行此操作?

编辑:1。我希望继续使用列范围,而不必指定每列。 2.指向的示例不会处理所有类型的新行字符。

2 个答案:

答案 0 :(得分:2)

由于您拥有大量列,因此最好将数据加载为line:chararray,然后使用REPLACE函数。一旦数据被清除,您就可以使用{{1}将行拆分为列,然后使用范围获取所需的列。

STRSPLIT

答案 1 :(得分:0)

您可以使用&#34; org.apache.pig.piggybank.storage.CSVExcelStorage(&#39;,&#39;)&#34;存储类导入数据然后你可以使用replace命令替换&#34; new line&#34;字段数据中的字符。

注册/usr/lib/pig/piggybank.jar; a = LOAD&#39; /path/to/file.csv'使用org.apache.pig.piggybank.storage.CSVExcelStorage(&#39;,&#39;) b = FOREACH a GENERATE $ 1; DUMP b

Piggybank是一个默认的jar,因此它应该可以在注册时使用。