2016-01-13 44 views
0

我的使用案例:如何使用shell腳本編寫Sqoop作業

每天小時表在mysql db中被創建。我需要使用Sqoop每天將它們移動到HDFS,並使用Impala處理HDFS數據。

如何編寫一個shell腳本或作業才能將新創建的表數據定期移動到HDFS(現有文件系統)?

今天說的是2016年1月3日,當我今天運行我的工作,然後2016年1月2日的數據應該從mysql遷移到HDFS,就像每天的廣泛它應該移動前一天的數據。 每日我需要在此HDFS集羣上運行我的Impala查詢並生成報告。
如何使用Impala處理整個數據並生成報告?

回答

1

最好的方法是獲取帶有2個參數的shell腳本。 1將是該表的名稱,另一個將是hdfs路徑,因爲這些將是您場景中唯一改變的2個因素。以下是您可以放入.sh並以bash運行的示例腳本。

 

    !/bin/bash 

    TABLENAME=${^^1} 
    HDFSPATH=${^^2} 
    NOW=$(date +"%m-%d-%Y-%H-%M-%S") 

    sqoop --import --connect jdbc:db2://mystsrem:60000/SCHEMA \ 
    --username username \ 
    --password-file password \ 
    --query "select * from ${TABLENAME} \$CONDITIONS" \ 
    -m 1 \ 
    --delete-target-dir \ 
    --target-dir ${HDFSPATH} \ 
    --fetch-size 30000 \ 
    --class-name ${TABLENAME} \ 
    --fields-terminated-by '\01' \ 
    --lines-terminated-by '\n' \ 
    --escaped-by '\' \ 
    --verbose &> logonly/${TABLENAME}_import_${NOW}.log 

可選: 如果您需要導入蜂巢表

--hive降,進口delims \ --hive進口\ --hive覆寫\ --hive -table HiveSchema。$ {TABLENAME}