DynamoDB에서 EMR hive를 사용하여 S3에 CSV를 출력해 보았습니다.

6292 단어 DynamoDBhiveCSVEMRS3

1. S3에 CSV를 출력하는 버킷과 폴더 만들기



이번에는 이런 느낌으로 했다.
emr-dynamodb-export-test-2017-11-30/2130
  • 버킷: emr-dynamodb-export-test-2017-11-30
  • 폴더: 2130

  • 2. EMR로 클러스터 시작



  • クラスターを作成 클릭


  • クラスター名 를 입력합니다.
  • EC2 キーペア를 지정합니다.


  • 그 외는 디폴트인 채 クラスターを作成 를 클릭. (물론 변경해도 좋음)



  • 잠시 기다려.



    대기중이 되면 다음.

    3. 마스터에 SSH 연결


  • マスターパブリック DNS 에, SSH 링크가 있기 때문에, 클릭.
  • ssh 명령 샘플이 있습니다. 사용자는 hadoop
  • pem 파일은 자신의 경로로 변경됩니다.

  • ssh -i ~/hoge.pem [email protected]
    

    ※ 이유는 모르지만 보안 그룹의 인바운드에 22가 없어 수동으로 추가한 적이 있었다.

    단!!



    hive 실행


  • hive 명령 실행
  • hive 
    
  • DynamoDB에 저장된 데이터를 참조하는 Hive 테이블을 만듭니다. (이 기사
    같은 DynamoDB 테이블 사용)
    - testtable01 DynamoDB의 테이블 이름.
  • create external table hive_Table (
      hv_timestamp bigint,
      hv_user      string,
      hv_id        string,
      hv_jst       string,
      hv_value     bigint
    )
    stored by 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
    tblproperties (
      "dynamodb.table.name" = "testtable01",
      "dynamodb.column.mapping"="hv_timestamp:timestamp,hv_user:user,hv_id:id,hv_jst:jst,hv_value:value"
    )
    ;
    
  • Amazon S3에서 EXTERNAL 테이블을 생성합니다.
  • create external table s3_Table (
      hv_timestamp bigint,
      hv_user      string,
      hv_id        string,
      hv_jst       string,
      hv_value     bigint
    )
    row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    location 's3://emr-dynamodb-export-test-2017-11-30/2130/'
    ; 
    
  • DynamoDB 데이터를 Amazon S3에 씁니다.
  • insert overwrite table s3_Table 
    select * 
    FROM hive_Table
    ;
    
  • 이런 출력
  • Query ID = hadoop_20171130135920_255a0f5b-47ad-4a9a-b00c-99cd0394ef00
    Total jobs = 1
    Launching Job 1 out of 1
    Status: Running (Executing on YARN cluster with App id application_1512049485217_0001)
    
    ----------------------------------------------------------------------------------------------
            VERTICES      MODE        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
    ----------------------------------------------------------------------------------------------
    Map 1 .......... container     SUCCEEDED      1          1        0        0       0       0
    Reducer 2 ...... container     SUCCEEDED      1          1        0        0       0       0
    ----------------------------------------------------------------------------------------------
    VERTICES: 02/02  [==========================>>] 100%  ELAPSED TIME: 36.58 s
    ----------------------------------------------------------------------------------------------
    Loading data to table default.s3tablenamek
    OK
    Time taken: 43.527 seconds
    
  • 이런 파일을 S3 에 할 수 있다.


  • 다운로드합니다.

  • (완료되면 클러스터 삭제)
  • 여기가 특히 참고가 되었다.
  • DynamoDB 데이터를 내보내고, 가져오고, 쿼리하는 Hive 명령 사용 예 - Amazon EMR


  • 이상

    4. 다음은 ...


  • where 쓸 수 있습니까? 그렇게 할 수 있다고 생각하지만. 두근두근
  • 출력 파일 이름을 지정할 수 있습니까?
  • 좋은 웹페이지 즐겨찾기