복붙노트

[HADOOP] map reduce에서 최적 키를 선택하는 방법은 무엇입니까?

HADOOP

map reduce에서 최적 키를 선택하는 방법은 무엇입니까?

주식 거래 로그 파일로 작업하고 있습니다. 각 줄은 20 개의 탭으로 구분 된 값을 가진 거래를 나타냅니다. 이 파일을 처리하고 거래 벤치마킹을하기 위해 hadoop을 사용하고 있습니다. 현재 각 줄에 대해 별도의 벤치 마크 계산을 수행해야하므로 맵 축소에서 축소 기능이 필요하지 않습니다. 각 줄의 벤치 마크 계산을 수행하려면 해당 줄에 해당하는 일부 표준 값을 얻기 위해 Sybase 데이터베이스를 쿼리해야합니다. 데이터베이스는 각 라인의 두 값 [trade Id 및 Stock Id]에 따라 색인됩니다. 이제 내 질문은 mapReduce 프로그램에서 tradeId 및 StockId를 키로 사용해야하는지 또는 키에 대해 다른 값 / [값의 조합]을 선택해야하는지입니다.

해결법

  1. ==============================

    1.따라서 각 입력 줄에 대해 데이터베이스를 쿼리 한 다음 각 줄에 대해 벤치 마크 계산을 개별적으로 수행합니다. 벤치 마크 계산을 마치면 각 라인에 벤치 마크 값을 출력합니다.

    따라서 각 입력 줄에 대해 데이터베이스를 쿼리 한 다음 각 줄에 대해 벤치 마크 계산을 개별적으로 수행합니다. 벤치 마크 계산을 마치면 각 라인에 벤치 마크 값을 출력합니다.

    이 경우 리듀서를 전혀 사용하지 않거나 ID 리듀서를 사용할 수 없습니다.

    따라서 맵 함수는 한 줄로 읽은 다음 Sybase 데이터베이스에 표준 값을 쿼리 한 다음 벤치 마크 계산을 수행합니다. 각 라인을 벤치 마크 값으로 출력하고 싶기 때문에 맵 기능을 사용하여 라인을 키로, 벤치 마크 값을 값으로 출력 할 수 있습니다 (예 : <라인, 벤치 마크 값>

    귀하의지도 기능은 다음과 같습니다. (벤치 마크 값이 정수라고 가정합니다)

    public void map(Text key, IntWritable value, Context context) throws Exception {
        String line = value.toString();   //this will be your key in the final output
    
         /* 
             Perform operations on the line
    
          */
    
          /* 
    
             standard values = <return value from sybase query.>;
    
          */
    
          /*Perform benchmark calculations and obtain benchmark values */
    
          context.write(line,benchmarkValue);     
    
    
    
    
    }
    
  2. from https://stackoverflow.com/questions/17600258/how-to-select-the-optimal-key-in-map-reduce by cc-by-sa and MIT license