Mahout/Hadoop 환경에 상당히 익숙합니다. 그렇기 때문에이 질문에 사소한 사과를 하긴하지만 아직 간단한 답을 찾지 못했습니다.표준 Mahout recommender를 자동화하십시오
나는 다음과 같은 참고 표준 추천인 작업을 제출할 수 두싯,과 EMR 클러스터가 :
mahout recommenditembased --input s3a://input-bucket/ratings_small.csv
--output s3a://output-bucket/out/ --numRecommendations 2
--similarityClassname SIMILARITY_COSINE
모든 좋은,하지만 나는 마스터 노드에 SSH를 통해 연결되어 있어야합니다.
이제는이 실행을 자동화하여 전용 람다 함수가 EMR에 단계를 제출하고 그것에 대해 잊어 버릴 생각입니다. 그 일을하는 가장 쉬운 방법은 무엇일까요? Java로 전체 추천 애플리케이션을 작성하지 않고 Hadoop의 JAR 단계로 제출할 수 있습니까?
------ ------ 2016년 4월 10일 업데이트]
조금 더 파고 후, (적어도 나에게) 가장 쉬운 옵션은 밝혀졌다 다음 매개 변수를 사용하여 EMR 클러스터에서 "사용자 정의 JAR"작업 :
이름 : 임의의 단계 이름
JAR 위치 :
/usr/lib/mahout/mahout-mr-0.12.2-job.jar
,개
인수 : 실패
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob --input s3a://your-bucket/input/ --output s3a://your-bucket/output/ --similarityClassname SIMILARITY_EUCLIDEAN_DISTANCE --tempDir temp/random_guid/
액션 - 계속합니다.
분명히 위의 작업을 AWS CLI 또는 SDK를 통해 프로그래밍 방식으로 완전히 제출할 수도 있습니다.
참고 : 추천인이 실행될 때마다, 두싯 HDFS에서 임시 디렉토리를 생성하기 때문에 내가, 인수 --tempDir
을 사용 (기본적으로, 그것은 temp/
입니다). 그러나 Mahout 은 계산이 완료되면 디렉토리를 삭제하지 않습니다. 당신이 2 개 개의 연속 된 추천 작업을 제출할 경우에 따라서, 두 번째는
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory temp/preparePreferenceMatrix/itemIDIndex already exists
내가 프로그래밍 추천인 작업을 제출으로 유사한 오류로 실패합니다, 나는 모든 작업에 대해 임의의 GUID와 다른 임시 디렉토리를 사용하기로 결정했습니다 . 또는 새 작업을 제출하기 전에 이전 작업에서 작성한 임시 디렉토리를 수동으로 제거 할 수 있습니다.