2014-02-28 3 views
4

HDFS2 GB 데이터가 있습니다.몇 줄의 HDFS 데이터 가져 오기

데이터를 임의로 가져올 수 있습니까? 우리는 유닉스 명령 행에서와 같이

cat iris2.csv |head -n 50 
+3

-n 2는 임의의 데이터를 제공하지 않습니다 ... 처음 2 줄을 반환합니다. – Jasper

답변

15

기본 머리

여기에서 고양이가 머리이 모든 라인을 읽는대로 곧 스트림을 닫으므로
hadoop fs -cat /your/file | head 

이 여기에서 효율적입니다.

hadoop fs -tail /your/file 

불행히도 그것은 데이터 라인의하지 주어진 수의 마지막 킬로바이트를 반환

는 하둡에 특별한 효과 명령이 꼬리를 얻으려면.

0

나의 제안은 하이브 테이블에 데이터를로드하는 것입니다, 당신은 같은 것을 할 수 있습니다

SELECT column1, column2 FROM (
    SELECT iris2.column1, iris2.column2, rand() AS r 
    FROM iris2 
    ORDER BY r 
) t 
LIMIT 50; 

편집 : 이 간단 버전입니다 해당 쿼리의 :

SELECT iris2.column1, iris2.column2 
FROM iris2 
ORDER BY rand() 
LIMIT 50; 
0

쓰기 명령

sudo -u hdfs hdfs dfs -cat "path of csv file" |head -n 50 

50 행수

4

head 및 Linux tail 명령은 제 10 및 마지막 10 표시 (이것은 요구 사항에 기초하여 상기 사용자에 의해 정의 될 수있다)이며 라인. 그러나이 두 명령의 출력은 무작위로 샘플링되는 것이 아니라 파일 자체와 동일한 순서로 표시됩니다. 이 경우 iris2.csv을 경우에,

$ hadoop fs -cat <file_path_on_hdfs> | shuf -n <N>

따라서 : -

리눅스 셔플 shuf 명령은 우리가 명령과 같이, 도움이 될 것 하둡과 함께이를 사용하여 입력 라인 &의 임의 순열을 생성하는 데 도움이 HDFS의 파일이며, 당신은 무작위로 데이터 세트에서 샘플 50 선 원 :

$ hadoop fs -cat /file_path_on_hdfs/iris2.csv | shuf -n 50

참고 : Linux sort 명령을 사용할 수도 있지만 shuf 명령은 더 빠르고 더 무작위로 데이터를 샘플링합니다.

+1

이것은 셔플에 대한 다른 답변이 없기 때문에 정답입니다. –

0
hdfs dfs -cat yourFile | shuf -n <number_of_line> 

Mac OS에서는 사용할 수 없습니다. 설치된 GNU coreutils를 얻을 수 있습니다.

관련 문제