sqoop動態分區導入mysql,使用sqoop import從mysql往hive含分區表中導入數據的一些注意事項...

先看下面這條語句,它實現的功能是將特定日期的數據從mysql表中直接導入hive

$ sqoop import \

--connect jdbc:mysql://192.168.xx.xx:3306/db_name?useSSL=false \

--username xxx --password xxxxxx \

--query "select d.id, d.callsign, d.sobt from t_flight_baseinfo d where d.id is not null and d.sobt >= '2020-12-27' and \$CONDITIONS" \

--target-dir /user/hive/warehouse/datapros.db/t_flight_baseinfo/dt=2020-12-27 \

--delete-target-dir --fields-terminated-by '\t' --split-by d.id \

--hive-import --hive-overwrite --m 2 --direct \

--hive-database datapros --hive-table t_flight_baseinfo \

--hive-partition-key dt --hive-partition-value 2020-12-27

以下對命令中的參數作簡單說明:

--connect /--username / --password

很明顯,這是mysql數據庫的連接字符串

--query

這是選取數據的查詢語句。這里需要注意的是:

每條查詢語句必須要添加where條件;

末尾還要加上'$CONDITIONS'這個占位符;

當使用雙引號包裹住這個查詢語句時,'$CONDITIONS'前要加上轉義符變為'\$CONDITIONS',而如果使用單引號來包裹,就不用加轉義符!

--target-dir

mysql數據導入HDFS后的目標路徑(也即hive表的“數據文件”地址)

--delete-target-dir

導入前是否先刪除target-dir中定義的目錄(如果存在的話)

說明:這個參數比較重要!一般情況下,同一條導入語句,第一次執行時,要不要這個參數沒有關系,但如果是多次執行同一條導入語句,而又沒有提前手工刪除目標目錄時,就出出現“Output directory hdfs://hadoop:9820/somepath/${target_dir} already exists”,因此,這個參數一定要加上

--direct

使用直接導入模式,可以提高導入速度

--m 2

指定并行執行導入數據任務的map進程個數

--hive-database / --hive-table t_flight_baseinfo

指定導入到hive中的目標數據庫與數據表名稱

--hive-partition-key / --hive-partition-value

指定hive數據表的分區信息

--hive-overwrite

指定hive中的目標表可以被多次覆蓋寫入

--hive-import / --create-hive-table

1、create-hive-table:在hive中創建目標表(不管它是不是已經存在),如果目標表已經存在,就會給出“AlreadyExistsException(message:Table XXX already exists”出錯信息;

2、hive-import : hive-import在執行時,會自動生成一個建表的sql語句,當hive中不存在表時,它即自動創建目標表與存儲目錄,然后再導入數據;

mysql往hive帶分區表中導入實踐

1、在實踐中發現,當需要創建帶分區的表時,如果使用--create-hive-table參數,則每次都會提示表已存在錯誤(這個表確實是存在);不過,這個錯誤提示不影響命令的正確執行;

2、但是,如果不帶上這個參數,如果之前這個分區已存在 ,則會出現在hive表中能查到這個分區,但是它實際的存儲目錄已經被刪除(delete-target-dir參數的效果), hive-import會認為此分區已存在,就停止從mysql中往hdfs中導入數據,最后提示導入的數據numFiles=0,相當于分區表被清空;

3、如果不想每次都看到表已存在的錯誤提示,可以在執行導入命令之前,先執行一下 hive -e "alter table db_name.tb_name drop partition(partition_key='partition_value');"),先刪除這個分區,這樣hive-import就會創建hive表分區與重建存儲目錄。當然,這時候就不用加--create-hive-table參數了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393925.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode面試題 08.04. 冪集(遞歸)

冪集。編寫一種方法,返回某集合的所有子集。集合中不包含重復的元素。 說明:解集不能包含重復的子集。 示例: 輸入: nums [1,2,3] 輸出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 代碼 class Solution {List&l…

gatsby_我如何使用Gatsby和Netlify建立博客

gatsbyby Pav Sidhu通過帕夫西杜(Pav Sidhu) 我如何使用Gatsby和Netlify建立博客 (How I Built My Blog Using Gatsby and Netlify) 您能說出更具標志性的二人??組合嗎? ? (Can you name a more iconic duo? ?) Years ago, whenever I built a stat…

交叉熵與相對熵

熵的本質是香農信息量()的期望。 現有關于樣本集的2個概率分布p和q,其中p為真實分布,q非真實分布。 按照真實分布p來衡量識別一個樣本的所需要的編碼長度的期望(即平均編碼長度)為:H(p)。 如果使用錯誤分布q來表示來自真實分布p的平均編碼長度…

menustrip

在對應菜單上點擊鼠標右鍵,插入,SEPARATOR 就可以了,然后可以選中拖動位置。轉載于:https://www.cnblogs.com/Echo529/p/6382302.html

直接排序

題目:使用直接排序法將下列數組(從小到大排序)思路:第一次:使用索引值為0的元素與其他位置的元素挨個比較一次,如果發現比0號索引值的元素小的,那么交換位置,第一輪下來最小值被放在…

leetcode78. 子集(回溯)

給定一組不含重復元素的整數數組 nums,返回該數組所有可能的子集(冪集)。 說明:解集不能包含重復的子集。 示例: 輸入: nums [1,2,3] 輸出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 代碼 class Solution {pub…

php字符串綜合作業,0418php字符串的操作

實例字符串函數(一):長度計算$siteName php中文網;//獲取內部字符編碼集$encoding mb_internal_encoding();//1、strlen($str):獲取字節表示的字符串長度//utf8模式下,一個中文字符用三個字節表示echo strlen($siteName),; //12//2、mb_strlen($str,$encoding)&…

如何處理JavaScript中的事件處理(示例和全部)

In this blog, I will try to make clear the fundamentals of the event handling mechanism in JavaScript, without the help of any external library like Jquery/React/Vue.在此博客中,我將嘗試在沒有任何外部庫(例如Jquery / React / Vue)的幫助下闡明JavaSc…

js 圖片預覽

//顯示選擇的圖片縮略圖function showImage(inputId,imageConfirmId,imageConfi){var imagedocument.getElementById(inputId).value.toLowerCase();if(!image){return;}var fileExtendimage.substr(image.lastIndexOf(".", image.length)1);if(!(fileExtend"jp…

什么是copyonwrite容器

2019獨角獸企業重金招聘Python工程師標準>>> CopyOnWrite容器即寫時復制的容器。通俗的理解是當往一個容器添加元素的時候,不直接往當前容器添加,而是先將當前容器進行Copy,復制出一個新的容器,然后新的容器里添加元素…

hystrix 源碼 線程池隔離_Hystrix源碼學習--線程池隔離

分析你的系統你所認識的分布式系統,哪些是可以進行垂直拆分的?拆分之后系統之間的依賴如何梳理?系統異構之后的穩定性調用如何保證?這些都是可能在分布式場景中面臨的問題。說個比較常見的問題,大家都知道秒殺系統&…

P2341 [HAOI2006]受歡迎的牛 強連通

題目背景 本題測試數據已修復。 題目描述 每頭奶牛都夢想成為牛棚里的明星。被所有奶牛喜歡的奶牛就是一頭明星奶牛。所有奶 牛都是自戀狂,每頭奶牛總是喜歡自己的。奶牛之間的“喜歡”是可以傳遞的——如果A喜 歡B,B喜歡C,那么A也喜歡C。牛欄…

oracle em agent,ORACLE?11G?EM?配置命令及問題處理

11g裝好以后,一直未用EM,昨天晚上和今天晚上終于抽時間把EM啟動起來了,還遇到一點小問題,1.EM配置的一些命令創建一個EM資料庫emca -repos create重建一個EM資料庫emca -reposrecreate--------這個很主要,一般第一次不成功創建的時…

leetcode89. 格雷編碼

格雷編碼是一個二進制數字系統,在該系統中,兩個連續的數值僅有一個位數的差異。 給定一個代表編碼總位數的非負整數 n,打印其格雷編碼序列。即使有多個不同答案,你也只需要返回其中一種。 格雷編碼序列必須以 0 開頭。 示例 1:…

注重代碼效率_如何提升質量:注重態度

注重代碼效率by Harshdeep S Jawanda通過Harshdeep S Jawanda 如何提升質量:注重態度 (How to skyrocket quality: focus on attitude) When it comes to discussing quality and how we can improve, the most common things that come to peoples minds are test…

spark mllib推薦算法使用

2019獨角獸企業重金招聘Python工程師標準>>> 一、pom.xml <!-- 機器學習包 --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.10</artifactId><version>${spark.version}</version>&…

Android仿QQ復制昵稱效果2

本文同步自http://javaexception.com/archives/77 背景: 在上一篇文章中&#xff0c;給出了一種復制QQ效果的方案&#xff0c;今天就來講講換一種方式實現。主要依賴的是一個開源項目https://github.com/shangmingchao/PopupList。 解決辦法: PopupList.java的代碼封裝的比較完…

R語言的自定義函數—字符組合

前兩天寫了幾個函數&#xff0c;對里面收獲到的一些東西做一些記錄。 函數str_comb&#xff0c;用于輸入一個字符串或數值向量&#xff0c;返回由向量中元素組成的不重復的長度小于向量長度的所有組合&#xff0c;結果用矩陣形式輸出。 函數使用結果如下&#xff1a; 思路很簡單…

oracle group by 兩項,Oracle中group by 的擴展函數rollup、cube、grouping sets

Oracle的group by除了基本使用方法以外&#xff0c;還有3種擴展使用方法&#xff0c;各自是rollup、cube、grouping sets。分別介紹例如以下&#xff1a;1、rollup對數據庫表emp。如果當中兩個字段名為a&#xff0c;b,c。假設使用group by rollup(a,b)&#xff0c;首先會對(a,b…

leetcode1079. 活字印刷(回溯)

你有一套活字字模 tiles&#xff0c;其中每個字模上都刻有一個字母 tiles[i]。返回你可以印出的非空字母序列的數目。 注意&#xff1a;本題中&#xff0c;每個活字字模只能使用一次。 示例 1&#xff1a; 輸入&#xff1a;“AAB” 輸出&#xff1a;8 解釋&#xff1a;可能的…