1. 程式人生 > >Sqoop 資料匯入匯出實踐

Sqoop 資料匯入匯出實踐

Sqoop是一個用來將hadoop和關係型資料庫中的資料相互轉移的工具,可以將一個關係型資料庫(例如:mysql,oracle,等)中的資料匯入到hadoop的HDFS中,也可以將HDFS的資料匯入到關係型資料庫中。

1.簡介

首先切換到到hadoop使用者:su - hadoop

溫馨提示:oracle的所有表名列名都要大寫!!!

下面的程式碼,在命令列輸入的時候,可能要寫成一行

比如第一條需要寫成:

sqoop export --table Oracle_table_name --connect jdbc:oracle:thin:@ip:1521:資料庫名 --username 使用者名稱 --
password 密碼 --export-dir hdfs:/user/hive/warehouse/XXX --columns COLUMN1,2,3 --input-fields-terminated-by '\001' --input-lines-terminated-by '\n'

1.導hive表到Oracle

sqoop export 
--table Oracle_table_name 
--connect jdbc:oracle:thin:@ip:1521:資料庫名 
--username 使用者名稱
--password 密碼
--export-dir hdfs:/user/hive/warehouse/XXX
--columns COLUMN1,2,3, --input-fields-terminated-by '\001' #或者其他分隔符,比如逗號等 --input-lines-terminated-by '\n' 注意:導hive表是“\001”

解釋:

sqoop export
–table Oracle_table_name(// 資料庫Oracle的表名)

–connect jdbc:oracle:thin:@ip:1521:資料庫名
(//資料庫的地址,其中1521為埠號,預設都為1521,ibd為資料庫例項名)

–username使用者名稱(//資料庫使用者名稱)
–password使用者名稱(//資料庫密碼)

–export-dir hdfs:/user/hive/warehouse/XXX
(//hdfs上Hive表的絕對路徑)
–columns column1, column2…
(//資料庫表的所有列名)

–input-fields-terminated-by ‘\001’(列分隔符)
–input-lines-terminated-by ‘\n’ (行分隔符)

2. 查詢資料匯入到Oracle的資料是否成功

sqoop eval 
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username XXX
--password XXX
--query "select * from table_name"

3.導Oracle表到hive表

sqoop import 
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--table TABLE_NAME
--columns COLUMN1,2,3...
--hive-import  
--hive-table  hive_table_name
-m 1

—解釋:

TABLE_NAME為oracle表名(切忌:Oracle個表名在命令中必須是大寫,不然會報錯)
hive_test為hive表名(hive中的這個表可以不用提前建,只用給表名即可,導成功後列名和Oracle表的列名相同)

4. 連線oracle資料庫,列出資料庫中的表

sqoop list-tables 
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx

5.從資料庫匯出表的資料到HDFS檔案(這個比較實用)

sqoop import 
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--table DD
--m 1 
--target-dir /home/dpt 

解釋:
DD為oracle表名(切忌:Oracle表名在命令中必須是大寫,不然會報錯);
/home/dpt為目的目錄,如果沒有這個目錄則會在hdfs上自動建立這個目錄.
導成功後可以用命令檢視:

hadoop fs -text /home/dpt/part-m-00000

6.分割槽表的匯入

通過sqoop將hive中的表匯入到oracle中

sqoop export 
--table t_amap_all 
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--export-dir  hdfs://user/hive/warehouse/ 
--columns 1,2,3... 
--input-fields-terminated-by '\t' 
--input-lines-terminated-by '\n';

匯入分割槽表需要指定到具體分割槽目錄,不然會找不到資料,在oracle表中能指定分割槽這個欄位!
分隔符要遵循hive表的具體分隔符

導致任務失敗有可能是表名不一致,欄位不一致,oracle中的欄位大小不夠

2.可能遇到的問題

  1. 連線oracle資料庫,列出資料庫中的表時
sqoop list-tables 
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx

報錯:
16/01/28 09:27:15 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver

1)發現sqoop的安裝目錄 /usr/lib/sqoop/lib中缺ojdbc驅動包,然後將驅動包(ojdbc6-11.2.0.1.0.jar)複製到your-ip的sqoop安裝目錄就可以了:
scp ./ojdbc6-11.2.0.1.0.jar [email protected]:/usr/lib/sqoop/lib

參考連結

相關推薦

Sqoop 資料匯入匯出實踐

Sqoop是一個用來將hadoop和關係型資料庫中的資料相互轉移的工具,可以將一個關係型資料庫(例如:mysql,oracle,等)中的資料匯入到hadoop的HDFS中,也可以將HDFS的資料匯入到關係型資料庫中。 1.簡介 首先切換到到hadoo

hadoop平臺下的資料匯入匯出工具Sqoop

Sqoop是一個從關係型資料庫中匯入資料到大資料平臺的有效工具,同樣也可以將大資料平臺中的資料匯入到關係型資料庫中,本套視訊,全面詳細的介紹瞭如何使用該工具,課程大綱如下所示 1.汪文君Sqoop實戰-01Sqoop介紹以及環境搭建 2.汪文君Sqoop實戰-02Sqoop

利用sqoop完成資料匯入匯出

一.安裝SQOOP後可使用如下命令列出mysql資料庫中的所有資料庫,與檢驗是否安裝成功。      #  sqoop list-databases --connect jdbc:mysql://lo

Sqoop進行資料匯入匯出

Sqoop是用來進行資料匯入匯出的工具,一般用在hadoop這個框架中,常用的應用場景有將mysql資料庫中的資料匯入HDFS或者Hive、Hbase,或者從後者中匯出到關係型資料庫中,下面將進行幾段

sqoop用法之mysql與hive資料匯入匯出

[TOC] ## 一. Sqoop介紹 `Sqoop`是一個用來將`Hadoop`和關係型資料庫中的資料相互轉移的工具,可以將一個關係型資料庫(例如:`MySQL、Oracle、Postgres`等)中的資料導進到`Hadoop`的`HDFS`中,也可以將`HDFS`的資料導進到關係型資料庫中。對於某些`N

poiExcel表格所有操作以及資料匯入匯出

這個是本人在學習中記錄的筆記以供大家參考 Poi簡介: 1.1什麼是poi Apache POI [1]  是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Offi

使用POI將資料匯入匯出資料庫。

POI將資料匯入匯出資料庫。(採用ssm框架) 1.前臺列表的展示 <script type="text/javascript"> //進行資料的全選 function selectAll(){ var ids=document.get

【轉載】oracle 資料匯入匯出

oracle 資料匯入匯出   一、oracle中copy from的用法     1.語法及使用說明   1.1 語法   下面我們來看一下SQL*Copy Command的語法及使用說明。   在解釋SQ

Hive命令之三:hive的資料匯入匯出

Hive 資料的匯入匯出: 一 Hive資料匯出   1、匯出資料到本地檔案系統:      insert overwrite local directory '/software/data/data1' select * f

oracle 11g 資料庫表空間建立與資料匯入匯出

** oracle資料庫中進行資料的匯入匯出時要在cmd中進行而不是在sqlplus中進行操作! (1)向oracle資料庫中匯入完整的資料庫(字尾名:dmp)      首先進入cmd,輸入sqlplus /nolog執行oracle自帶程式,

Hive DML(資料匯入匯出)

DML DML:Data Manipulation Language(資料管理語言) 載入資料到表 語法 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (part

藍的成長記——追逐DBA(1):奔波於路上,挺進山東 藍的成長記——追逐DBA(3):古董上操作,資料匯入匯出成了問題 藍的成長記——追逐DBA(8):重拾SP報告,回憶oracle的STATSPACK實驗 藍的成長記— —追逐DBA(9):國慶漸去,追逐DBA,新規劃,新啟程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Excel表實現資料匯入匯出

  資料匯入: @PostMapping("/imp") public String imp(@RequestPart("filePath") MultipartFile filePath) { //建立一個excel檔案 HSSFWorkb

MySQL資料匯入匯出亂碼問題

場景 程式使用gbk編碼,表使用的是latin1編碼,而我再一次倒入資料的操作中使用了utf8的終端,指定--default-character-set='latin1'倒入的資料是亂碼,而後來將終端換成gbk之後酒倒入成功了 通過變換插入資料的終端,模擬我們平常需要倒入資料的終端

使用O2OA二次開發搭建企業辦公平臺(七)平臺部署篇:伺服器備份和資料匯入匯出

  本部落格為O2OA系列教程、O2OA使用手冊,教程目錄和各章節天梯將在連載完後更新。 使用O2OA二次開發搭建企業辦公平臺(一)平臺部署篇:平臺下載和部署 使用O2OA二次開發搭建企業辦公平臺(二)平臺部署篇:埠衝突和伺服器埠配置 使用O2OA二次開發搭建企業辦公平

MySQL匯入匯出實踐

最近一次資料遷移,需要將MySQL的資料匯出、處理後匯入到新表和ES。這裡做個簡單記錄,方便後續查詢。 注: 為了寫文章方便及隱私安全,實際內容會有所簡化。例如表結構簡化、資料庫連線部分全部用 xxx 表示、目錄及檔名均為化名等。 實踐過程 原表: book_db 庫 - b_book(

hbase資料匯入匯出

hbase資料匯入 將本地檔案(test.csv)上傳到hdfs的根目錄下,然後匯入資料到hbase 1.本地寫一個檔案進行測試,檔名為test.csv,內容如下: 2.將檔案上傳到Hadoop 3.檢視是否上傳成功(檔案存在,表示成功) 4.進入hbase s

Elasticsearch 兩個叢集之間資料匯入匯出

直接上程式碼 官網地址 參考地址 package net.abc; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSON

R資料匯入匯出(一): read.table()和read.csv()的區別

之前也參考過一些資料,雖然是這麼簡單的兩個buildin,還是仔細對比了一下,我有兩張txt,都是從cube中匯出的,就意味著每一列的列數是不一樣的。R語言官方文件中有這樣一句話不知道大家注意到了沒有: 意思是說,R語言對於匯入的格式要求非常嚴格,可以說是不靈活的;簡而言之就是更希望的是格式在外部編輯好

SQLServer 資料匯入匯出 SSIS 包 位置

筆記:sqlserver 在執行資料匯入匯出的時候,可以選擇是否儲存SSIS包,如果選擇儲存,在儲存方式有:SQlserver 、檔案系統。 如果選擇sqlserver 則 包資訊儲存在 msdb 系統資料庫 中的 sysssispackages 表中。 如果是檔案系統,在