하이브는 PHP 스크립트를 사용하여 맵/리듀스를 완료합니다.

WBOY
풀어 주다: 2016-07-29 09:15:54
원래의
1207명이 탐색했습니다.

hive sql의 더욱 강력한 기능 중 하나는 외부 스크립트를 사용하여 매핑/축소를 완료할 수 있다는 것입니다. 사용법은 다음과 같습니다.
TRANSFORM(….) '….' AS(….)를 사용합니다.
USING은 PHP 스크립트를 사용하여 처리할 수 있습니다. 구체적인 사용법은 아래 예를 참조하세요.

① 테이블을 생성합니다:

<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>
로그인 후 복사

②. 다음 데이터/tmp/member.dat

<code>1     zhangsan     zs1024
2     lisi     ls1991
3     wangwu     ww2001
4     liumang     lm1234
5     linxing     lx1990</code>
로그인 후 복사

3을 준비합니다. 🎜 >

볼 수 있는 내용:
<code>hive> <span>load</span> data <span>local</span> inpath <span>'/tmp/member.dat'</span> into <span>table</span> member;</code>
로그인 후 복사

데이터가 준비되었습니다. 이제 세 번째 열에서 md5 암호화를 수행합니다. 이를 처리하기 위해 php 스크립트를 사용합니다. php 스크립트(/tmp/changePasswd.php)의 코드는 다음과 같습니다.
<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>
로그인 후 복사

④ php 스크립트를 하이브에 추가합니다.
<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>
로그인 후 복사

⑤. php 스크립트를 사용하여 map/reduce를 실행합니다
<code>hive> <span>add</span> file /tmp/changePasswd<span>.php</span><span>;</span></span></span></code>
로그인 후 복사

마지막으로 passwd 열의 데이터가 변경된 것을 확인할 수 있습니다.
<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>
로그인 후 복사
저작권 안내: 이 글은 해당 블로거의 원본 글이므로 재배포시 출처를 꼭 밝혀주세요.

위 내용은 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿