如何将ADLS中单行文件内容读取到Pig变量并作为参数传递
解决方案:从ADLS单行文件读取内容作为Pig变量
直接修改你的Pig脚本,利用Shell命令执行结果来赋值变量就行——Pig的%default支持用反引号包裹Shell命令,把命令输出直接作为变量值。
修改后的完整脚本
%default property 'this is my property'; %default setflag 'false'; // 读取ADLS单行文件内容并赋值给$header %default header `az dls file read --account storage --path /file.txt`; register myjar.jar; DEFINE Wrap com.Main('$property', '$header', '$setflag');
关键说明
- 命令逻辑:这里用Azure CLI的
az dls file read命令直接读取ADLS文件内容,因为你的文件只有一行,命令会直接输出这行内容,反引号会把这个输出结果赋值给$header变量。 - 环境要求:执行脚本的机器需要提前安装Azure CLI,并且完成身份认证(比如
az login或者配置服务主体权限),确保能访问目标ADLS账户和文件。 - HDFS客户端替代方案:如果你的环境已经配置好HDFS可访问ADLS,也可以用HDFS命令替换:
%default header `hdfs dfs -cat adl://storage.azuredatalakestore.net/file.txt`;
额外注意点
- 要是后续文件可能出现多行的情况,可以追加
head -n 1确保只取第一行:%default header `az dls file read --account storage --path /file.txt | head -n 1`; - 如果文件内容包含单引号这类特殊字符,需要用
sed做转义处理,避免脚本报错:%default header `az dls file read --account storage --path /file.txt | sed "s/'/\\\\'/g"`;
内容的提问来源于stack exchange,提问作者jasodjas
相关产品推荐
相关产品推荐

