1

사내 깔때기 분석 인프라를 만들고 싶습니다. 모든 사용자 활동 피드 정보는 원하는 데이터베이스/DW에 기록 된 다음 유입 경로를 동적으로 정의 할 때 유입 경로의 각 단계에 대한 세션 수를 선택할 수 있기를 원합니다.내부 유입 경로 분석을 작성하는 방법은 무엇입니까?

어디서나 그런 것을 만드는 예는 찾을 수 없습니다. 어떤 사람들은 Hadoop과 MapReduce를 사용해야한다고 말하지만 온라인에서는 예제를 찾을 수 없습니다.

답변

1

귀하의 맵리 듀스는 아주 간단합니다 :

매퍼가 로그 파일에 세션의 행을 읽고, 그 출력은 (사슴 아이디, 1)

기어의

설정 번호는 단계의 수와 동일합니다 .

감속기는 각 단계의 값을 합계합니다. 단어 수 계산 예 (하둡에 대한 "Hello World"- https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html#Example%3A+WordCount+v1.0)와 같습니다.

Hadoop 클러스터를 설정하거나 Amazon에서 Elastic Map Reduce를 사용해야합니다.

동적으로 퍼널을 정의하려면 Hadoop의 DistributedCache 기능을 사용할 수 있습니다. 결과를 보려면 MapReduce가 완료 될 때까지 기다려야합니다 (최소 수십 초 또는 Amazon Elastic MapReduce의 경우 분, 데이터 양과 클러스터 크기에 따라 다릅니다).

결과를 더 빨리 제공 할 수있는 또 다른 솔루션 - 데이터베이스 사용 : 선택 카운트 (distinct session_id) mylogs에서 스테이지 별 그룹화;

데이터가 너무 많아 해당 쿼리를 신속하게 실행할 수없는 경우 (전체 테이블 스캔을 수행하는 경우, HDD 전송 속도는 약 50-150MB/초 - 수학은 간단 함) - 실행중인 분산 분석 데이터베이스를 사용할 수 있습니다 HDFS (Hadoop의 분산 파일 시스템) 이상. 옵션은이 경우

은 (여기에만 오픈 소스 프로젝트를 나열) :

아파치 하이브 (하둡의 맵리 듀스 기반으로하지만, 당신이 하이브의 ORC 형식으로 데이터를 변환하는 경우 - 당신이 얻을 것이다 결과 많은 더 빠름).

MapReduce를 기반으로하지 않는 Cloudera의 임팔라는 결과를 몇 초 만에 반환 할 수 있습니다. 가장 빠른 결과를 얻으려면 데이터를 마루판 형식으로 변환하십시오.

Shark/Spark - in - memory 분산 데이터베이스.

+0

감사합니다. 퍼널을 동적으로 정의하고 결과를 바로 볼 수 있습니까? 아니면 결과를 사용할 수있을 때까지 잠시 기다려야 할 필요가 있습니까? –

+0

이 문제를 해결하기위한 답을 편집했습니다. –

+0

와우 덕분에! 아직 한쪽 끝이 느슨합니다. 내가 역방향 경로가있는 퍼널을 가지고 있기 때문에 각 단계의 합계가 작동하지 않습니다. 예 : a-> b-> a (a 및 b는 페이지 이름 임). 이 경우 3 단계에서 첫 번째 단계의 모든 페이지 뷰를 계산하므로 합계를 사용하면 효과가 없습니다. 내가 어떻게이 문제를 해결할 수 있을지 생각해? 다시 한번 감사드립니다! –

관련 문제