sqoop將hive數據導出到關系型數據庫


以下信息,只要根據自己的數據庫的相應信息修改以下,即可,sqoop其實就是很簡單的,一般hive數據存儲為列式存儲,所以要提前把要寫到關系型數據庫的數據寫到一個text后綴的表里,然后才能導出到關系型數據庫中。

還要特別注意寫到關系型數據庫中數據的格式要一一對應

#pg庫相關信息

database_connection="jdbc:postgresql://192.168.0.2:8080/db_name"
database_username="user" 
database_password="pass" 
databaseTableName="test2"
databaseColums="a1,a2,a3"

 

#將數據寫到一個臨時表中
hive -v -e " set mapred.job.queue.name=${queueName}; USE hive_db_name; INSERT OVERWRITE TABLE test3 select a1,a2,a3 from test1 where y='2019' and m='11' and d='29'; "; if [[ $? != 0 ]]; then print_log "hive執行失敗!" exit 1 fi #hdfs路徑 exportHdfsPath="hdfs://hdfs01-shyp-cx/hive_db_name/test3" sqoop export -Dmapred.job.queue.name=$queueName \ //mr的隊列 --connect $database_connection \ //關系型數據庫的連接 --username $database_username \ //關系型數據庫的用戶名 --password $database_password \ //關系型數據的密碼 --export-dir $exportHdfsPath \ //hive表的hdfs路徑 --verbose \ --table $databaseTableName \ //要寫到的表名 --columns $databaseColums \ //要寫過去的字段名 --input-fields-terminated-by '\001' \ //hive表的分割符,注意表一定是行式存儲的表才能導出,一般是text后綴的表 --input-lines-terminated-by '\n' \ //每行的分割符 --input-null-string '\\N' \ //空值處理 --input-null-non-string '\\N' //空值處理 if [[ $? != 0 ]]; then print_log "sqoop導出失敗!" exit 1 fi

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM