Store 命令中的 Pig Latin 参数
Posted
技术标签:
【中文标题】Store 命令中的 Pig Latin 参数【英文标题】:Pig Latin Parameters in Store Command 【发布时间】: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'
。
【参考方案1】:
@pauljcg 已经回答了这个问题,我的输出字符串的格式需要是:
'/输出/颜色/$颜色'
我错误地在参数周围放置了额外的引号。
ps。我不知道如何提升对答案的评论,否则我会这样做。
【讨论】:
以上是关于Store 命令中的 Pig Latin 参数的主要内容,如果未能解决你的问题,请参考以下文章