sqoop導入數據到hive表中的相關操作


 

1.使用sqoop創建表並且指定對應的hive表中的字段的數據類型,同時指定該表的分區字段名稱
  sqoop create-hive-table --connect "jdbc:oracle:thin:@192.168.13.1:1521/test" --username root --password 12345 --table test --hive-table myhive5 --hive-partition-key partition_time --map-column-hive id=String,number=String,modify_time=String

 

2.按照時間字段來組裝sql增量導入指定時間范圍內的數據,同時改變時間的類型,可以使時間精確到秒;另外注意導入時指定的分區值的路徑與對應的值
  sqoop import --connect "jdbc:oracle:thin:@192.168.13.1:1521/test" --username root --password 12345  --query "SELECT i.id,i.number,i.FILE_NO,TO_CHAR(i.MODIFY_DATE_TIME ,'yyyy-mm-dd hh24:mi:ss') FROM JHMR_FILE_INDEX i WHERE MODIFY_DATE_TIME >=TO_DATE('2017-10-23 11:00:00', 'yyyy-mm-dd hh24:mi:ss') and \$CONDITIONS" --target-dir /user/hive/warehouse/myhive5/partition_time=20171023 --hive-import -m 5 --hive-table myhive5 --split-by PATIENT_ID --hive-partition-key partition_time --hive-partition-value 20171023

   過濾導入的時候,沒有主鍵的要加--split-by 且 --target-dir 后面的路徑加上分區路徑即可(這樣就不會報路徑存在異常)

 

3.創建表,全量導入(sqlserver條件用where,oracle用and)
  sqoop create-hive-table --connect "jdbc:sqlserver://192.168.13.1:1433;username=root;password=12345;databasename=test" --table test --hive-table myhive2 --hive-partition-key partition_time --map-column-hive ID=String,name=String,addr=String

  sqoop import --connect "jdbc:sqlserver://192.168.13.1:1433;username=root;password=12345;databasename=test" --query "select * from test i where \$CONDITIONS" --target-dir /user/hive/warehouse/myhive2/partition_time=20171023 --hive-import -m 5 --hive-table myhive2 --split-by ID --hive-partition-key partition_time --hive-partition-value 20171023

 


免責聲明!

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



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