parameters - Store 命令中的 Pig Latin 参数
问题描述
我开发了一个接受参数 $color 的 Pig Latin。
我已经加载了我的数据集,并根据这个参数成功地过滤了它。
现在我正在尝试存储输出,我正在尝试将参数用作 store 命令中的文件夹,如下所示:
STORE Final_Relation INTO '/output/colour/'$colour'' USING PigStorage();
这给了我以下错误:
错误 1200:<文件 TestScript,第 32 行,第 63 列> 输入“蓝色”不匹配,需要 SEMI_COLON
我要补充的一件事是,这里的颜色中有一个连字符,例如蓝灰色......虽然同样适用于第一种颜色,例如红橙色,所以我不确定这是否相关(我只是觉得奇怪,错误消息只包含字符串“blue”的第一部分,而不是完整的字符串“blue-grey”。
作为替代方案,我认为使用以下命令将所有内容存储在颜色文件夹中可能是可以的:
STORE Final_Relation INTO '/output/colour' USING PigStorage();
但是当我这样做时,我第二次运行我的脚本(即第一次运行良好),我得到了错误:
输出位置验证失败:'/output/colour 更多信息:
输出目录 hdfs://sandbox-hdp.XXXX.com:XXXX/output/colour 已经存在
这似乎让我陷入了尴尬的境地:
- 我无法使用参数动态创建子文件夹
- 我不能将所有输出放入同一个文件夹
- 我的真实数据有成千上万种颜色 - 因此手动创建文件夹是不切实际的。
解决方案
@pauljcg 已经回答了这个问题,我的输出字符串的格式需要是:
'/输出/颜色/$颜色'
我错误地在参数周围放置了额外的引号。
附言。我不知道如何宣传对答案的评论,否则我会这样做。
推荐阅读
- php - 从服务器发送命令到 swift 应用程序
- reactjs - 从 dangerouslySetInnerHTML 延迟加载图像
- java - 如何使用 Jena 获取资源的 EXPLICIT listProperties(非推断属性)
- c - 测量执行函数所花费的时间
- python - 我在哪里可以找到 Azure 中的“storage_account_name”、“storage_account_key”、“storage_container_name”?
- r - R数据集中的TextInput过滤器闪亮
- node.js - 目前在 Node v 10 中使用 ES6 / Import 语句等最简单的方法是什么
- typescript - 如何将 typescript npm 模块导入语法转换为 ECMA2015 模块导入语法
- javascript - D3js 将 SVG 导出为图像
- intellij-idea - 在本地编辑远程文件并将它们提交到 intellijea IDEA