安全退出 pig shell 命令
Posted
技术标签:
【中文标题】安全退出 pig shell 命令【英文标题】:Exit pig shell command safely 【发布时间】:2013-03-17 03:02:30 【问题描述】:当我在 Pig 交互式 shell 环境中输入一些错误命令时,它会进入监听模式 (>>),如下所示。如何安全地退出此命令,但仍留在 pig shell 环境中?
Ctrl + C 把我带出猪壳,直到那时我失去了我的环境设置。
**grunt> Test_group = group Block2_Prep_filter by (page_visit_id as grp_page_visit_id, page_user_guid as grp_page_user_guid);
>> ;
>>
>>**
【问题讨论】:
我也面临同样的问题。我尝试了quit
命令或以Ctrl-C
结尾,但不知何故它覆盖了现有的键盘映射设置,然后我所有的backspace
都转换为^H
【参考方案1】:
我查看了猪源代码。这称为 secondary_prompt(在 PigScriptParser.jj 中找到,JavaCC 的上下文无关解析器语法文件)。在我看来,它似乎无法摆脱。我尝试了很多我在该代码中看到的东西的组合,但没有任何效果。也尝试了所有我能想到的退出类型的词,但无济于事。
当我执行 Ctrl + D 时,它退出并显示:
>> 2013-06-19 12:51:43,632 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000:
Error during parsing. Lexical error at line 83, column 0. Encountered: <EOF> after : ""
查看 Grunt 类,此时确实如此:
parser.setInteractive(false);
return parser.parseStopOnError();
这向我表明,此时交互性已经结束。
【讨论】:
以上是关于安全退出 pig shell 命令的主要内容,如果未能解决你的问题,请参考以下文章