【发布时间】:2021-02-10 21:40:07
【问题描述】:
我开发了一个接受参数 $color 的 Pig Latin。
我已经加载了我的数据集,并根据这个参数成功过滤了它。
现在我正在尝试存储输出,我正在尝试将参数用作存储命令中的文件夹,例如:
STORE Final_Relation INTO '/output/colour/'$colour'' USING PigStorage();
这给了我以下错误:
错误 1200: 不匹配的输入“蓝色”预期为 SEMI_COLON
我要补充一点,这里的颜色有一个连字符,例如蓝灰色......虽然同样适用于第一种颜色,例如红橙色,所以我不确定这是否相关(我只是觉得奇怪的是错误消息只包含字符串'blue'的第一部分而不是完整的字符串'blue-grey'。
作为替代方案,我认为可以使用以下命令将所有内容存储在颜色文件夹中:
STORE Final_Relation INTO '/output/colour' USING PigStorage();
但是当我这样做时,我第二次运行我的脚本(即第一次运行良好),我得到了错误:
输出位置验证失败:'/output/colour 更多信息:
输出目录 hdfs://sandbox-hdp.XXXX.com:XXXX/output/colour 已经存在
这似乎让我陷入了尴尬的境地:
- 我无法使用参数动态创建子文件夹
- 我不能将所有输出放到同一个文件夹中
- 我的真实数据有数千种颜色 - 因此手动创建文件夹是不切实际的。
【问题讨论】:
-
我认为你应该在 STORE 命令中尝试 '/output/colour/$colour'。不确定这是否可行,但或者您能否在参数中不包含“/output/colour/”?然后在脚本中使用
STORE final_rel INTO '$output'。
标签: parameters apache-pig latin