如何逃避猪脚本中的单引号

时间:2014-04-24 21:17:49

标签: apache-pig

猪脚本可以使用双引号吗?如果不是如何逃避单一报价?我试图解析一个约会时间,并且我发现错误

Unexpected character '"'

这是脚本

logOutput = FOREACH parsedLog GENERATE uid, ToDate(timestamp,"YYYY-MM-DD'T'hh:mm ss:'00'") as theTime:datetime

2 个答案:

答案 0 :(得分:3)

您可以使用\\(双反斜杠)转义单引号。

%declare CURRENT_TIME_ISO_FORMAT ToString($CURRENT_TIME,'yyyy-MM-dd\\'T\\'HH:mm:ss.SSSZ')

请注意,当您使用转义时,不应该在脚本的另一个位置重复使用创建的String,而应该在单个调用中重用所有内容。 例如,假设您要将字符串发送到ISOToDay函数,此脚本将失败:

%declare CURRENT_TIME_ISO_FORMAT ToString($CURRENT_TIME,'yyyy-MM-dd\\'T\\'HH:mm:ss.SSSZ')
%declare TODAY_BEGINNING_OF_DAY_ISO_FORMAT ISOToDay($CURRENT_TIME_ISO_FORMAT)

相反,你应该这样做:

%declare TODAY_BEGINNING_OF_DAY_ISO_FORMAT ISOToDay(ToString($CURRENT_TIME,'yyyy-MM-dd\\'T\\'HH:mm:ss.SSSZ'))

答案 1 :(得分:2)

尝试使用\并使用单引号转义它们。

logOutput = FOREACH parsedLog GENERATE uid, ToDate(timestamp,'YYYY-MM-DD\'T\'hh:mm ss:00') as theTime:datetime

不确定您对'00'的意思。