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

本文介绍了如何通过HiveSQL的TRANSFORM和USING功能,结合PHP脚本进行数据导入、处理和加密操作,具体以MD5加密为例,展示了数据表的创建、数据导入及使用PHP脚本执行map/reduce过程,最终实现数据列的加密更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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     zs1024
2     lisi     ls1991
3     wangwu     ww2001
4     liumang     lm1234
5     linxing     lx1990

③、导入数据

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

可以看到:

hive> select * from member;
OK
1       zhangsan        zs1024
2       lisi    ls1991
3       wangwu  ww2001
4       liumang lm1234
5       linxing lx1990

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

<?php

while(!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;
OK
1       zhangsan        d03eed89429cc3006cc279322c2800c5
2       lisi    063401506c9d9f0e49a706e3779b7428
3       wangwu  ac5a8109dbbb46c9f69ffd5fc93c11f8
4       liumang fda8b97fd723bdbf6a754812b5ecec27
5       linxing 4035378ace8936e93d95aa77e7e224d4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值