1. 程式人生 > 其它 >大資料-hive-記錄一次不用sqoop將mysql庫的資料匯入到hive庫中

大資料-hive-記錄一次不用sqoop將mysql庫的資料匯入到hive庫中

技術標籤:大資料大資料hivemysql

一、場景描述


公司需要的一些資料是自己收集的,收集的時候儲存在mysql中,現在需要將mysql中的儲存的資料匯入到hive庫中。

網上檢視教程找到很多的匯入方式都報錯,描述最多的是sqoop匯入。Sqoop(SQL-to-Hadoop):主要用於傳統資料庫和hadoop之間的傳輸資料。

但是hive環境是我自己搭建起來的,還沒有安裝sqoop,安裝又會浪費大量的時間,所有思考能不能不通過sqoop將mysql中的資料匯入到hive中。

二、匯入過程


將mysql資料匯入hive庫的思路是:
第一步:將mysql的資料利用Navicate工具匯出成txt檔案,注意:資料的列與列之間用空格隔開(這與下面建立hive表相對應)

需要注意的是:每個欄位的資料不能有雙引號或者單引號。(Navicate匯出嚮導:欄位分隔符 選擇:空格,文字限定符 選擇:無)
匯出資料如下所示,(第一步不會的請自行百度,有很多文章)
例如:1 91320115MA1MB5TFXJ 南京外曼進出口貿易有限公司 無報關權的其他企業 跨境電子商務企業 跨境電子商務交易平臺 金陵海關 一般信用企業

第二步:hive庫的建表語句,資料之間以空格“ ”,注意這個語句就是代表以空格隔開,與第一步對應fields terminated by ' '
建表語句(注意:建表之前首先得建立一個數據庫,如果已經建立好了,需要use命令指定該資料庫):

create external table major_events(
`id` string comment '自增id',
`events_name` string comment '事件名稱',
`events_content` string comment '事件內容',
`source` string comment '來源網站',
`date` string comment '發生時間'
) comment '重大事件表'
row format delimited
fields terminated by ' '
lines terminated by '\n'
stored as textfile
LOCATION
'/tmp/nanjing/major_events';

第三步:將mysql匯出的major_events.txt檔案上傳到linux的/home/software/hadoop-2.7.1/hadoop_data/目錄下
在hive中執行下面語句匯入資料:

LOAD DATA LOCAL INPATH '/home/software/hadoop-2.7.1/hadoop_data/major_events.txt' OVERWRITE INTO TABLE major_events;

第四步:查詢結果看到匯入成功。

  hive> select * from major_events limit 1;
OK
1    央行就非銀行支付機構條例徵求意見    強化支付領域反壟斷監管措施   為加強對非銀行支付機構的監督管理,規範非銀行支付機構行為,防範支付風險,保障當事人合法權益,促進支付服務市場健康發展,中國人民銀行會同有關部門研究起草了《非銀行支付機構條例(徵求意見稿)》(下稱《條例》),現向社會公開徵求意見,意見反饋截止時間為2021年2月19日。  央行在《條例》起草說明中指出,黨中央、國務院高度重視防控金融風險、保障金融安全。黨的十九大要求“健全金融監管體系,守住不發生系統性金融風險的底線”。防範支付領域金融風險是守住不發生系統性金融風險底線的重要一環。2010年6月,人民銀行制定《非金融機構支付服務管理辦法》(中國人民銀行令〔2010〕第2號釋出),奠定了非銀行支付機構(以下簡稱支付機構)監管基礎。近年來,支付服務市場快速發展,創新層出不窮,風險複雜多變,機構退出和處置面臨新的要求。總體看,為適應市場發展、對外開放和強化監管需要,迫切需要加快推動出臺《條例》,提升支付機構監管法律層級,進一步規範支付機構合規經營,維護支付服務市場健康發展。  在起草思路上,一是堅持功能監管的理念。強調同樣的業務遵守相同的規則,避免監管套利和監管空白。二是堅持機構監管與業務監管相結合。按照“先證後照”原則,對支付機構實施機構監管,同時對支付機構業務經營、關聯交易等實施全方位監管。三是堅持穿透式監管。加強對股東、實際控制人和最終受益人准入和變更的監管。  從《條例》主要內容來看,《條例》共六章,七十五條。包括:第一章總則,第二章設立、變更與終止,第三章支付業務規則,第四章監督與管理,第五章法律責任,第六章附則。  總則方面,《條例》遵循公平競爭、實質重於形式、普惠金融的核心監管原則,按照業務實質確定支付業務新的分類方式。即,按照資金和資訊兩個維度,根據是否開立賬戶(提供預付價值)、是否具備存款類機構特徵,將支付業務重新劃分為儲值賬戶運營業務和支付交易處理業務兩類,以適應技術和業務創新需要,有效防止監管套利和監管空白。  設立、變更與終止方面,《條例》從我國國情出發,堅持金融業務必須持牌經營,對支付機構按照“先證後照”原則,強化公司治理要求,實施全方位、全流程監管。同時,通過正面清單加負面清單方式,明確成為支付機構股東、實際控制人和最終受益人的條件及禁止情形,加強對股東資質、實際控制人和最終受益人的監管。  支付業務規則方面,《條例》堅持問題導向,強化綜合監管,系統性提出支付機構在從事支付業務時必須遵守的原則與規定。一是根據從事儲值賬戶運營業務的支付機構和從事支付交易處理業務的支付機構風險程度的不同,分類確定業務監管要求。二是明確支付機構發起的跨機構支付業務,應通過具有相應合法資質的清算機構處理,確保資金和資訊保安、透明。三是強化備付金管理要求,強調備付金不屬於支付機構自有財產,要求支付機構將備付金存放在人民銀行或符合要求的商業銀行,並明確與之配套的審慎監管措施,充分保障使用者權益。  監督與管理方面,《條例》以強化金融監管為重點,以防範系統性金融風險為底線,豐富監管手段。一是強化支付領域反壟斷監管措施,明確界定相關市場範圍以及市場支配地位認定標準,維護公平競爭市場秩序。二是規範人民銀行的檢查權和檢查措施,保障人民銀行執法權的有效行使。三是明確支付機構股權質押、開展創新業務、重大事項變更等情況須向人民銀行備案等監管要求。  法律責任方面,《條例》以做好支付領域風險防範和處置、堅決打擊違規活動、整治金融亂象為主旨,明確支付機構退出情形,加大對支付機構違規行為和違規人員的處罰力度。明確對無證經營支付業務的機構參照《防範和處置非法集資條例》相關規定進行處理,加大對持牌機構為無證經營支付業務的機構提供支付業務渠道行為的處罰力度。  附則方面,明確中國支付清算協會對支付資訊服務機構進行備案管理。對支付資訊服務機構公司治理等方面的監管,參照《條例》關於支付機構的相關規定執行。 (劉琪)
Time taken: 0.203 seconds, Fetched: 1 row(s)
hive>

三、匯入過程中遇到的問題總結


在匯入時,因為是自己收集的資料,其中events_name、events_content這兩列的資料中,包含回車鍵,製表符,空格等特殊字元,需要在第一步之前將這兩列的資料做處理。
處理過程:進入mysql庫的major_events表中,執行下面替換語句:

update major_events set
events_name= replace(replace(replace(events_name,'\r',' '),'\n',' '),'\t',' '),
events_content= replace(replace(replace(events_content,'\r',' '),'\n',' '),'\t',' ');

剛開始,就是忽略了這個問題,導致匯入的資料雖然提示匯入成功了,但是查詢時全部是NULL值。