transform语句中使用php编写map-red脚本
1、编写hql
-- 集群上php的执行环境 set mapred.cache.archives=hdfs://host:port/pathtophp/php.tgz#home; set mapred.job.priority=VERY_HIGH; -- 添加的本地文件 add file /pathtoscript/script.php; SELECT transform(val1, val2,...) -- 列的分隔符 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' -- 使用自定义脚本进行map-red处理 USING 'home/work/php/bin/php -c home/work/php/etc/php.ini script.php' AS (newVal1, newVal2,...) -- 列的分隔符 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' FROM tbl;
2、编写php脚本
while (($line = fgets(STDIN)) !== false) { $arr = explode("\t", $line); // 此处是处理过程 echo "{$arr[0]}\t{$arr[1]}\t...\n"; }
3、调试
可以使用如下方式调试自定义脚本
cat test.txt | php script.php
4、参考资料
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Transform