能否通过ECL IDE指定喷洒ECL DATASET对象的目标集群名称?
如何指定ECL DATASET对象喷洒的目标集群名称
你当前使用OUTPUT语句喷洒DATASET的方式如下:
myDS := DATASET([{{'James','Walters','C'}, {'Jessie','Blenger'}, {'Horatio','Walters'}}, {{'Anne','Winston'}, {'Sant','Aclause'}, {'Elfin','And'}}], personRecord); // 常规喷洒方式 OUTPUT(myDS,,'sprayed::target_scope',NAMED('FILE_HAS_BEEN_SPRAYED'), OVERWRITE);
直接使用OUTPUT语句喷洒DATASET时,确实无法直接指定目标集群。但可以通过先将DATASET导出为临时文件,再用支持集群指定的工具喷洒的方式实现需求,具体步骤如下:
方法一:使用STD.File.SprayDelimited
- 先将DATASET写入集群临时文件:
// 将DATASET导出到临时文件,temp前缀的文件任务结束后自动清理 OUTPUT(myDS,,'temp::my_temp_ds', OVERWRITE);
- 调用
STD.File.SprayDelimited指定目标集群喷洒:
STD.File.SprayDelimited( 'temp::my_temp_ds', 'sprayed::target_scope', OVERWRITE, CLUSTER('你的目标集群名称') // 这里明确指定目标集群 );
方法二:使用DFUPlus工具
同样先导出DATASET到临时文件,再用DFUPlus的Spray方法指定集群:
// 第一步:导出到临时文件 OUTPUT(myDS,,'temp::my_temp_ds', OVERWRITE); // 第二步:指定集群喷洒 DFUPlus.Spray( SOURCEFILE('temp::my_temp_ds'), TARGET('sprayed::target_scope'), CLUSTER('你的目标集群名称'), OVERWRITE );
补充说明
- 临时文件使用
temp::前缀时,会在任务完成后自动删除,无需手动清理 - 这两种方法是当前兼容ECL DATASET对象且能指定目标集群的最简便方案
内容的提问来源于stack exchange,提问作者decoded051
相关产品推荐
相关产品推荐

