복붙노트

[HADOOP] 어떻게 동적으로 Sqoop을 명령 쉘 스크립트로 날짜를 전달하는 방법?

HADOOP

어떻게 동적으로 Sqoop을 명령 쉘 스크립트로 날짜를 전달하는 방법?

필자는 다음과 같은 명령으로 Sqoop을 가져 오기 작업 :

#!/bin/bash
    while IFS=":" read -r server dbname table; do
    sqoop eval --connect jdbc:mysql://$server/$dbname --username root --password cloudera --table mydata --hive-import --hive-table dynpart --check-column id --last-value $(hive -e "select max(id) from dynpart"); --hive-partition-key 'thisday' --hive-partition-value '01-01-2016'
done<tables.txt

임은 일상의 파티션을하고. 하이브 테이블 :

create table dynpart(id int, name char(30), city char(30))
  partitioned by(thisday char(10))
  row format delimited
  fields terminated by ','
  stored as textfile
  location '/hive/mytables'
  tblproperties("comment"="partition column: thisday structure is dd-mm-yyyy");

그러나 나는 내가 Sqoop을 작업을 생성하고 매일 실행 원하는대로 직접 파티션 값을주고 싶지 않습니다. (: 일 / 월 / 년 형식) 대신 직접주는 스크립트에서 어떻게 동적으로 명령을 Sqoop을 할 수있는 날짜 값을 전달할 수 있습니다? 어떤 도움에 감사드립니다.

해결법

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

    1.당신이 그것을 얻을 수있는 쉘 명령 날짜를 사용할 수 있습니다 (우분투 14.04) :

    당신이 그것을 얻을 수있는 쉘 명령 날짜를 사용할 수 있습니다 (우분투 14.04) :

    $ date +%d/%m/%Y
    22/03/2017
    
  2. ==============================

    2.당신은 아래 코드를 사용해 볼 수

    당신은 아래 코드를 사용해 볼 수

    #!/bin/bash
    DATE=$(date +"%d-%m-%y")
    while IFS=":" read -r server dbname table; do
    sqoop eval --connect jdbc:mysql://$server/$dbname --username root --password cloudera --table mydata --hive-import --hive-table dynpart --check-column id --last-value $(hive -e "select max(id) from dynpart"); --hive-partition-key 'thisday' --hive-partition-value $DATE
    done<tables.txt
    

    도움이 되었기를 바랍니다

  3. from https://stackoverflow.com/questions/42945763/how-to-pass-date-into-shell-script-for-a-sqoop-command-dynamically by cc-by-sa and MIT license