복붙노트

[HADOOP] HDFS 데이터 몇 줄 가져 오기

HADOOP

HDFS 데이터 몇 줄 가져 오기

HDFS에 2GB의 데이터가 있습니다.

그 데이터를 무작위로 얻을 수 있습니까? 우리가 유닉스 커맨드 라인에서하는 것처럼

cat iris2.csv |head -n 50

해결법

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

    1.네이티브 헤드

    네이티브 헤드

    hadoop fs -cat /your/file | head
    

    머리가 모든 선을 읽는 것을 끝내 자마자 고양이가 시내를 닫을 것이기 때문에 여기에서 능률적이다.

    꼬리를 잡으려면 특별한 효과가있는 명령이 있습니다.

    hadoop fs -tail /your/file
    

    불행히도 주어진 라인 수가 아닌 데이터의 마지막 킬로바이트를 반환합니다.

  2. ==============================

    2.Linux의 head 및 tail 명령은 각각 처음 10 행과 마지막 10 행을 표시합니다. 그러나이 두 명령의 출력은 무작위로 샘플링되지 않으며 파일 자체와 동일한 순서로 표시됩니다.

    Linux의 head 및 tail 명령은 각각 처음 10 행과 마지막 10 행을 표시합니다. 그러나이 두 명령의 출력은 무작위로 샘플링되지 않으며 파일 자체와 동일한 순서로 표시됩니다.

    Linux shuffle-shuf 명령은 입력 라인의 무작위 순열을 생성하는 데 도움이되며 Hadoop 명령과 함께 사용하면 다음과 같이 유용합니다.

    $ hadoop fs -cat | shuf -n

    그러므로이 경우 iris2.csv가 HDFS의 파일이고 데이터 세트에서 임의로 샘플링 된 50 개의 라인을 원한다면 :

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

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

  3. ==============================

    3.

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

    당신을 위해 속임수를 쓸 것입니다. Mac OS X에서는 사용할 수 없지만. GNU coreutils를 설치할 수 있습니다.

  4. ==============================

    4.내 제안은 그 데이터를 하이브 테이블에로드하는 것입니다, 다음과 같은 일을 할 수 있습니다 :

    내 제안은 그 데이터를 하이브 테이블에로드하는 것입니다, 다음과 같은 일을 할 수 있습니다 :

    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;
    
  5. ==============================

    5.이 명령을 작성하십시오

    이 명령을 작성하십시오

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

    50은 라인 수입니다 (요구 사항에 따라 사용자가 사용자 정의 할 수 있음)

  6. ==============================

    6.Hadoop에서도 head 명령을 사용할 수 있습니다! 구문은 다음과 같습니다.

    Hadoop에서도 head 명령을 사용할 수 있습니다! 구문은 다음과 같습니다.

    hdfs dfs -cat <hdfs_filename> | head -n 3
    

    그러면 파일에서 세 줄만 인쇄됩니다.

  7. ==============================

    7.

    hadoop fs -cat  /user/hive/warehouse/vamshi_customers/* |tail
    

    @Viacheslav Rodionov가 게시 한 답변에 따라 머리 부분이 잘 작동한다고 생각하지만 꼬리 부분에 대해서는 게시 한 것이 효과적입니다.

  8. from https://stackoverflow.com/questions/22090833/get-a-few-lines-of-hdfs-data by cc-by-sa and MIT license