我正在使用文件中的任何分隔符数据解析数据文件(csv、'tsv'\t'''''';')该方法使用“,”和“;”但不能使用tab'\t',我们如何将tab作为参数传递给pig?
python代码
delimiter = '\t'
cmd = 'pig -f sample.pig -p file='+data_file +' -p delimiter=' + delimiter
subprocess.Popen(cmd, shell=True, stderr=subprocess.STDOUT)
Pig
-- REGISTER 'piggybank.jar'
-- may use CSVExcelStorage in future
results = LOAD '$file' USING PigStorage('$delimiter');
我有以下例外
2014-03-31 03:26:41,412 [main] INFO org.apache.pig.tools.parameters.ParameterSubstitutionPreprocessor - The parameter: "delimiter= " cannot be parsed by Pig. Please double check it
2014-03-31 03:26:41,412 [main] INFO org.apache.pig.tools.parameters.ParameterSubstitutionPreprocessor - Parser give the follow error message:
2014-03-31 03:26:41,413 [main] INFO org.apache.pig.tools.parameters.ParameterSubstitutionPreprocessor - Encountered "<EOF>" at line 1, column 16.
Was expecting one of:
<IDENTIFIER> ...
<OTHER> ...
<LITERAL> ...
<SHELLCMD> ...
1条答案
按热度按时间8yparm6h1#
这里不要用贝壳;tab是shell的空白,不作为参数发送:
注意我要走了
shell
默认值False
在这里;当您只需调用pig
直接。与shell
左至False
,则在中传入参数列表。即使如此,我想你还是得付出代价
pig
顺序\t
(两个字符):或使用原始字符串:
如果这不起作用,你将不得不求助于特殊套管;我只阅读pig拉丁表达式参考,所以这是未经测试的,但我会使用条件表达式和
TAB
作为命令行参数:在python中: