hive 使用php指令碼來完成map reduce

2021-07-05 04:19:39 字數 1933 閱讀 9130

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...