[HADOOP] 쉘 스크립트를 사용하여 hadoop에서 마지막 5 분 동안 생성 된 파일 얻기
HADOOP쉘 스크립트를 사용하여 hadoop에서 마지막 5 분 동안 생성 된 파일 얻기
HDFS에 파일이 있습니다.
drwxrwx--- - root supergroup 0 2016-08-19 06:21 /tmp/logs/root/logs/application_1464962104018_1639064
drwxrwx--- - root supergroup 0 2016-08-19 06:21 /tmp/logs/root/logs/application_1464962104018_1639065
지금 / tmp / logs / root / logs / 디렉토리는 계속해서 새 파일을 가져옵니다. 지난 5 분 동안 작성된 파일을 현재 시간을 고려하여 가져 오려고합니다. 그런 다음이 파일을 로컬 컴퓨터에 복사해야합니다.
해결법
-
==============================
1.이것은 어떤가요:
이것은 어떤가요:
hdfs dfs -ls /tmp | tr -s " " | cut -d' ' -f6-8 | grep "^[0-9]" | awk 'BEGIN{ MIN=5; LAST=60*MIN; "date +%s" | getline NOW } { cmd="date -d'\''"$1" "$2"'\'' +%s"; cmd | getline WHEN; DIFF=NOW-WHEN; if(DIFF < LAST){ print $3 }}'
설명:
모든 파일 나열 :
여분의 공백 대체 :
필수 항목 가져 오기 :
불필요한 행 제거 :
awk를 사용하여 처리 :
DIFF 지속 시간 및 현재 시간 초기화 :
HDFS에서 파일의 타임 스탬프에 대한 에포크 값을 가져 오는 명령을 만듭니다.
명령을 실행하여 HDFS 파일의 획기적인 값을 얻습니다.
시차를 잡으십시오 :
차이에 따라 출력을 인쇄하십시오.
요구 사항 (여기 5 분)에 따라 MIN의 변수 값을 변경하면됩니다. HTH
-
==============================
2.나는 아래 명령을 사용하여 그것을했다 : 그것은 5 분 창 사이에 만들어지는 파일을 내게 줄 것이다 :
나는 아래 명령을 사용하여 그것을했다 : 그것은 5 분 창 사이에 만들어지는 파일을 내게 줄 것이다 :
hadoop fs -ls /tmp/logs/root/logs | awk '{ if ((($6 == "'"2016-08-18"'" && $7 <= "'"21:00"'") && ($6 == "'"2016-08-18"'" && $7 >= "'"20:55"'"))) print $8 } '
현재 시간 스탬프로 적절하게 수정할 수 있습니다.
from https://stackoverflow.com/questions/39032539/get-files-which-are-created-in-last-5-minutes-in-hadoop-using-shell-script by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hbase를 사용하여 이미지, 비디오 및 오디오 유형 처리 (0) | 2019.06.30 |
---|---|
[HADOOP] API를 통해 Hadoop 카운터 값에 액세스하는 방법은 무엇입니까? (0) | 2019.06.30 |
[HADOOP] 피벗 및 합계를 높이십시오. (0) | 2019.06.30 |
[HADOOP] 실행시 Hadoop 오류 : 키의 유형이 일치하지 않습니다. 예상되는 org.apache.hadoop.io.Text, 수신 된 org.apache.hadoop.io.LongWritable (0) | 2019.06.30 |
[HADOOP] Mahout rowSimilarity (0) | 2019.06.30 |