Heim >Backend-Entwicklung >PHP-Tutorial >Hive verwendet ein PHP-Skript, um die Zuordnung/Reduzierung abzuschließen

Hive verwendet ein PHP-Skript, um die Zuordnung/Reduzierung abzuschließen

WBOY
WBOYOriginal
2016-07-29 09:15:541216Durchsuche

Eine der leistungsstärkeren Funktionen von Hive SQL besteht darin, dass externe Skripte zum Vervollständigen der Zuordnung/Reduzierung verwendet werden können. Die Verwendung ist wie folgt:
TRANSFORMIEREN(….) MIT „….“ AS (….).
USING kann mithilfe von PHP-Skripten verarbeitet werden. Eine spezifische Verwendung finden Sie im folgenden Beispiel.

① Erstellen Sie eine Tabelle:

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

② Bereiten Sie die folgenden data/tmp/member.dat vor

<code>1     zhangsan     zs1024
2     lisi     ls1991
3     wangwu     ww2001
4     liumang     lm1234
5     linxing     lx1990</code>

③ 🎜 >

Sie können sehen:
<code>hive> <span>load</span> data <span>local</span> inpath <span>'/tmp/member.dat'</span> into <span>table</span> member;</code>

Die Daten sind fertig, jetzt führen wir die MD5-Verschlüsselung in der dritten Spalte durch. Wir verwenden ein PHP-Skript, um damit umzugehen. Der Code des PHP-Skripts (/tmp/changePasswd.php) lautet wie folgt:
<code>hive> <span>select</span> * <span>from</span> member;
OK
<span>1</span>       zhangsan        zs1024
<span>2</span>       lisi    ls1991
<span>3</span>       wangwu  ww2001
<span>4</span>       liumang lm1234
<span>5</span>       linxing lx1990</code>

④ Fügen Sie das PHP-Skript zu Hive hinzu.
<code><span><span><?php</span><span>while</span>(!feof(STDIN)){
     <span>$line</span> = rtrim(fgets(STDIN), <span>"\n"</span>);      <span>//逐行读取</span><span>if</span> (<span>empty</span>(<span>$line</span>)) <span>continue</span>;     <span>//空,跳出当次循环</span><span>$data</span> = explode(<span>"\t"</span>, <span>$line</span>);    <span>//将切分出来的数组保存起来,下面判断使用</span><span>foreach</span>(<span>$data</span><span>as</span> &<span>$val</span>){
          <span>$val</span> = md5(<span>$val</span>);
     }
     <span>unset</span>(<span>$val</span>);
     <span>echo</span> implode(<span>"\t"</span>, <span>$data</span>) . <span>"\n"</span>;
}</span></code>

⑤ Verwenden Sie ein PHP-Skript, um Map/Reduce auszuführen
<code>hive> <span>add</span> file /tmp/changePasswd<span>.php</span><span>;</span></span></span></code>

Schließlich können wir sehen, dass sich die Daten in der Spalte passwd geändert haben:
<code>hive> insert overwrite table member
    > select TRANSFORM(<span>`i</span>d<span>`,</span><span>`u</span>ser_name<span>`,</span><span>`p</span>asswd<span>`)</span> using <span>"/usr/bin/php changePasswd.php"</span>
    > as (<span>`i</span>d<span>`,</span><span>`u</span>ser_name<span>`,</span><span>`p</span>asswd<span>`)</span> from member<span>;</span></code>

<code>hive> <span>select</span> * <span>from</span> member;
OK
<span>1</span>       zhangsan        d03eed89429cc3006cc279322c2800c5
<span>2</span>       lisi    <span>063401506</span>c9d9f0e49a706e3779b7428
<span>3</span>       wangwu  ac5a8109dbbb46c9f69ffd5fc93c11f8
<span>4</span>       liumang fda8b97fd723bdbf6a754812b5ecec27
<span>5</span>       linxing <span>4035378</span>ace8936e93d95aa77e7e224d4</code>
Urheberrechtserklärung: Bei diesem Artikel handelt es sich um einen Originalartikel des Bloggers. Bitte geben Sie beim Nachdruck die Quelle an.

Das Obige stellt die Verwendung von PHP-Skripten zur Vervollständigung von Map/Reduction durch Hive vor, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn