>  기사  >  백엔드 개발  >  PHP에서 하둡을 사용할 수 있나요?

PHP에서 하둡을 사용할 수 있나요?

(*-*)浩
(*-*)浩원래의
2019-10-14 15:07:164334검색

Hadoop은 Apache Foundation에서 개발한 분산 시스템 인프라입니다. 사용자는 배포의 기본 세부 사항을 알지 못해도 분산 프로그램을 개발할 수 있습니다. 고속 컴퓨팅 및 저장을 위해 클러스터의 기능을 최대한 활용하세요.

PHP에서 하둡을 사용할 수 있나요?

Hadoop은 Java로 작성되었지만 Hadoop 스트림은 사용자가 어떤 언어로든 작성할 수 있는 API를 제공합니다. 함수를 매핑하고 함수를 줄입니다. (추천 학습: PHP 비디오 튜토리얼)

Hadoop 흐름의 핵심은 UNIX 표준 흐름을 프로그램과 Hadoop 간의 인터페이스로 사용한다는 것입니다. 따라서 모든 프로그램이 표준 입력 스트림에서 데이터를 읽고 표준 출력 스트림에 데이터를 쓸 수 있는 한, MapReduce 프로그램의 map 기능과 축소 기능은 Hadoop 스트림을 통해 어떤 언어로든 작성할 수 있습니다.

예:

bin/hadoop jar contrib/streaming/hadoop-streaming-0.20.203.0.jar -mapper /usr/local/hadoop/mapper.php -reducer /usr/local/hadoop/reducer.php -input test/* -output out4

Hadoop 스트리밍에 의해 도입된 패키지: hadoop-streaming-0.20.203.0.jar, Hadoop 루트 디렉터리에 hadoop-streaming.jar이 없습니다. , 스트리밍이기 때문에 contrib에서 찾아야 합니다. hadoop-0.20.2를 예로 들면 다음과 같습니다.

-input: 입력 hdfs에 대한 경로를 지정합니다. file

- 출력: 출력 hdfs 파일의 경로를 지정합니다.

-mapper: 맵 함수를 지정합니다.

-reducer: 축소 함수를 지정합니다.

mapper 함수

mapper.php 파일에 다음 코드를 작성하세요.

#!/usr/local/php/bin/php
<?php
$word2count = array();
// input comes from STDIN (standard input)
// You can this code :$stdin = fopen(“php://stdin”, “r”);
while (($line = fgets(STDIN)) !== false) {
    // remove leading and trailing whitespace and lowercase
    $line = strtolower(trim($line));
    // split the line into words while removing any empty string
    $words = preg_split(&#39;/\W/&#39;, $line, 0, PREG_SPLIT_NO_EMPTY);
    // increase counters
    foreach ($words as $word) {
        $word2count[$word] += 1;
    }
}
// write the results to STDOUT (standard output)
// what we output here will be the input for the
// Reduce step, i.e. the input for reducer.py
foreach ($word2count as $word => $count) {
    // tab-delimited
    echo $word, chr(9), $count, PHP_EOL;
}
?>

위 내용은 PHP에서 하둡을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.