Store 命令中的 Pig Latin 参数

问题描述

我开发了一个接受参数 $colour 的 Pig Latin。

我已经加载了我的数据集并根据这个参数成功过滤了它。

现在我正在尝试存储输出,我尝试将参数用作存储命令中的文件夹,如下所示:

STORE Final_Relation INTO '/output/colour/'$colour'' USING PigStorage();

这给了我以下错误

ERROR 1200: 不匹配的输入“blue”需要 SEMI_COLON

我要补充的一件事是,这里的颜色中有一个连字符,例如蓝灰色...虽然同样适用于第一种颜色,例如红橙色,所以我不确定这是否相关(我只是觉得奇怪,错误消息只包含字符串“blue”的第一部分,而不是完整的字符串“blue-grey”。

作为替代方案,我认为使用以下命令将所有内容存储在颜色文件夹中可能没问题:

STORE Final_Relation INTO '/output/colour' USING PigStorage();

但是当我这样做时,我第二次运行我的脚本(即第一次运行良好),我收到错误

输出位置验证失败:'/output/colour 更多信息:
输出目录 hdfs://sandBox-hdp.XXXX.com:XXXX/output/colour 已经存在

这似乎让我陷入了尴尬的境地:

  • 我无法使用参数动态创建子文件
  • 我无法将所有输出放到同一个文件夹中
  • 我的真实数据有数千种颜色变化 - 因此手动创建文件夹是不切实际的。

解决方法

@pauljcg 已经回答了这个问题,我的输出字符串的格式需要是:

'/输出/颜色/$colour'

我错误地在参数周围放置了额外的引号。

ps。我不知道如何将评论提升为答案,否则我会这样做。