1. 云栖社区>
  2. PHP教程>
  3. 正文

hive 使用php脚本来完成map/reduce

作者:用户 来源:互联网 时间:2017-12-01 17:17:07

hive 使用php脚本来完成map/reduce - 摘要: 本文讲的是hive 使用php脚本来完成map/reduce, hive sql有个比较强大的功能就是可以使用外界脚本来完成map/reduce。用法如下: TRANSFORM(….) USING ‘….’ AS (….)。 USING里面可以使用php脚本来处理,具体使用方法看下面这个例子。 ①、建

hive sql有个比较强大的功能就是可以使用外界脚本来完成map/reduce。用法如下:
TRANSFORM(….) USING ‘….’ AS (….)。
USING里面可以使用php脚本来处理,具体使用方法看下面这个例子。

①、建一个表:

hive> CREATE TABLE `member`(    >   `id` int,    >   `user_name` string,    >   `passwd` string    > )    > row format delimited    > fields terminated by "/t"    //这句很必要,不然下面的文件导入会导致所有的值都变成null     > stored as textfile;

②、准备如下数据 /tmp/member.dat

1     zhangsan     zs10242     lisi     ls19913     wangwu     ww20014     liumang     lm12345     linxing     lx1990

③、导入数据

hive> load data local inpath '/tmp/member.dat' into table member;

可以看到:

hive> select * from member;OK1       zhangsan        zs10242       lisi    ls19913       wangwu  ww20014       liumang lm12345       linxing lx1990

数据已经准备好了 ,现在我们相对第三列做一次md5加密。我们使用php脚本来处理,php脚本(/tmp/changePasswd.php)代码如下:

<?phpwhile(!feof(STDIN)){     $line = rtrim(fgets(STDIN), "/n");      //逐行读取    if (empty($line)) continue;     //空,跳出当次循环    $data = explode("/t", $line);    //将切分出来的数组保存起来,下面判断使用     foreach($data as &$val){          $val = md5($val);     }     unset($val);     echo implode("/t", $data) . "/n";}

④、将php脚本加入到hive中。

hive> add file /tmp/changePasswd.php;

⑤、使用php脚本来执行map/reduce

hive> insert overwrite table member    > select TRANSFORM(`id`,`user_name`,`passwd`) using "/usr/bin/php changePasswd.php"    > as (`id`,`user_name`,`passwd`) from member;

最后,我们可以看到,passwd那一列的数据已经改变:

hive> select * from member;OK1       zhangsan        d03eed89429cc3006cc279322c2800c52       lisi    063401506c9d9f0e49a706e3779b74283       wangwu  ac5a8109dbbb46c9f69ffd5fc93c11f84       liumang fda8b97fd723bdbf6a754812b5ecec275       linxing 4035378ace8936e93d95aa77e7e224d4

版权声明:本文为博主原创文章,转载请注明出处。

以上是hive 使用php脚本来完成map/reduce的全部内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有其他相关内容,欢迎继续使用右上角搜索按钮进行搜索,以便于您获取更多的相关知识。