Hadoop 학습 목록 연결
child-parent표를 제시하고 grandchild-grandparent표를 출력해야 합니다
샘플 입력:
child parent
Tom Lucy
Tom Jack
Jone Lucy
Jone Jack
Lucy Mary
Lucy Ben
Jack Alice
Jack Jesee
Terry Alice
Terry Jesee
Philip Terry
Philip Alma
Mark Terry
Mark Alma
샘플 출력:
grandChildgrandParent
TomAlice
TomJesee
JoneAlice
JoneJesee
TomMary
TomBen
JoneMary
JoneBen
PhilipAlice
PhilipJesee
MarkAlice
MarkJesee
사실 이 사례는 안의 관건을 납득하기만 하면 여전히 매우 간단하다.
문제풀이 사고방식: 단표 연결을 진행하다
샘플 입력 파일에서child--parent(child)--parent를 볼 수 있습니다. 이렇게 연결하면grandchild--grandparent를 찾을 수 있습니다.
예:
child parent
Tom Lucy
Tom Jack
Lucy Mary
Lucy Ben
Jack Alice
Jack Jesee
이렇게 하면 우리는 아래의 관계를 쉽게 찾을 수 있다.
grandchild grandparent
Tom Mary
Tom Ben
Tom Alice
Tom Jesee
이렇게 연결할 수 있습니다.
표 1: 표 2:
child parent child parent
Tom Lucy Lucy Mary
Lucy Ben
Tom Jack Jack Alice
Jack Jesee
우리는 표1과 표2를 연결한 후에 표1의 2열과 표2의 1열을 제거하고 나머지는 결과이다.
여기서 우리는 사실 시계 1과 시계 2는 하나의 시계인데 이것이 바로 단일 시계의 연결이라는 것을 볼 수 있다
여기는 이 시계를 왼쪽 시계와 오른쪽 시계로 설정할 수 있습니다
Map 단계:
읽은 데이터를child와parent로 분할하여 좌우표가 출력된value에 좌우표를 표시할 수 있는 정보를 구분하기 위해 왼쪽 표는parent를key로 하고 왼쪽 표는value를map출력으로 하고 오른쪽 표는value를key로 하고 오른쪽 표는value를value로출력한다.
Map 단계에서 좌우표 구분을 완성했고 shuffle 단계에서 좌우표 연결을 완성했다
Reduce 단계:
(같은 키의 모임, 예를 들어 >)
이렇게 Reduce 단계에서 받은 결과에는 키의value-list에grandchild(left:Tom)와grandparnet(rightTag:Mary,rgihtTag:Ben)의 관계가 포함되어 있으며,value를 해석하고,leftTag표시가 있는grandChild[]수조에 저장하고,rightTag표시가 있는grandParent[]수조에 저장하고,grandChild[]와grandParent[]에 피리를 구하면 됩니다.
프로그램 코드는 다음과 같습니다.
package cn.edu.ytu.botao.singletablejoin;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
/**
*
*
*
* child parent
* Tom Lucy
* Tom Jack
* Lucy Mary
* Lucy Ben
*
* :
* Lucy Tom
* Jack Tom
*
*
* Lucy Mary
* Lucy Ben
*
* :
*
* >
*
* @author botao
*
*/
public class STjoin {
private static int time = 0;
public static class STJMapper extends Mapper
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure HDInsight + Microsoft R Server에서 연산 처리 분산Microsoft Azure HDInsight는 Microsoft가 제공하는 Hadoop의 PaaS 서비스로 인프라 주변의 구축 노하우를 몰라도 훌륭한 Hadoop 클러스터를 구축할 수 있는 훌륭한 서비스입니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.