복붙노트

[HADOOP] --map-column-hive와 함께 Sqoop 가져 오기 명령을 사용하는 방법?

HADOOP

--map-column-hive와 함께 Sqoop 가져 오기 명령을 사용하는 방법?

Teradata에서 하이브로 가져온 데이터를 Sqoop하려고합니다. 나는 아래의 단계를 따르는 것을 생각했다.

1) 색조의 모든 필수 필드가있는 하이브 테이블을 만듭니다. 2) --map-column-hive 속성과 함께 Sqoop import 명령을 사용하여 Teradata에서 하이브로 데이터를로드합니다.

Sqoop 가져 오기 명령에서 이미 생성 된 하이브 테이블을 가리키는 방법, 그래서 Sqooped 데이터가 해당 하이브 테이블에 위치해야합니까?

해결법

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

    1.쉘 및 awk를 사용하여 기존 테이블에서 map-column-hive 속성을 생성 할 수 있습니다. COL1 = TYPE, COL2 = TYPE, ... COLN = TYPE 형식으로 생성됩니다.

    쉘 및 awk를 사용하여 기존 테이블에서 map-column-hive 속성을 생성 할 수 있습니다. COL1 = TYPE, COL2 = TYPE, ... COLN = TYPE 형식으로 생성됩니다.

    #!/bin/bash
    
    #Set table name here
    TABLE_NAME=your_schema.your_table
    
    #generate map from existing table
    MAP_COLUMN_HIVE=$(hive -S -e "set hive.cli.print.header=false; describe ${TABLE_NAME};" | awk -F " " 'f&&!NF{exit}{f=1}f{printf c toupper($1) "=" toupper($2)}{c=","}')
    
    #call sqoop with --map-column-hive parameter
    #add other sqoop params
    sqoop import [your sqoop params here] --map-column-hive "$MAP_COLUMN_HIVE" [more sqoop params]
    
  2. from https://stackoverflow.com/questions/45052340/how-to-use-sqoop-import-command-with-map-column-hive by cc-by-sa and MIT license