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;
ok1 zhangsan zs1024
2 lisi ls1991
3 wangwu ww2001
4 liumang lm1234
5 linxing lx1990
資料已經準備好了 ,現在我們相對第三列做一次md5加密。我們使用php指令碼來處理,php指令碼(/tmp/changepasswd.php)**如下:
<?php
while(!feof(stdin))
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 d03eed89429cc3006cc279322c2800c5
2 lisi 063401506c9d9f0e49a706e3779b7428
3 wangwu ac5a8109dbbb46c9f69ffd5fc93c11f8
4 liumang fda8b97fd723bdbf6a754812b5ecec27
5 linxing 4035378ace8936e93d95aa77e7e224d4
使用PHP指令碼來寫Daemon程式
什麼是daemon程序 這又是乙個有趣的概念,daemon在英語中是 精靈 的意思,就像我們經常在迪斯尼動畫裡見到的那些,有些會飛,有些不會,經常圍著動畫片的主人公轉來轉去,囉裡囉唆地提一些忠告,時不時倒霉地撞在柱子上,有時候還會想出一些小小的花招,把主人公從敵人手中救出來,正因如此,daemon有...
使用PHP指令碼來寫Daemon程式
什麼是daemon程序 這又是乙個有趣的概念,daemon在英語中是 精靈 的意思,就像我們經常在迪斯尼動畫裡見到的那些,有些會飛,有些不會,經常圍著動畫片的主人公轉來轉去,囉裡囉唆地提一些忠告,時不時倒霉地撞在柱子上,有時候還會想出一些小小的花招,把主人公從敵人手中救出來,正因如此,daemon有...
wordcount經典題 使用Hive完成單詞統計
準備資料 在hive建立資料庫 表 匯入資料 create database interview 建立資料庫 use interview 使用資料庫 create table wordcount line string 建立單詞統計表 這裡表中一行的資料是文件中的一行的字串 load data lo...