導航:首頁 > 編程大全 > sqoop查看資料庫

sqoop查看資料庫

發布時間:2024-03-24 23:21:35

『壹』 Sqoop工作原理是什麼

Sqoop是一款用於把關系型資料庫中的數據導入到hdfs中或者hive中的工具,當然也支持把數據從hdfs或者hive導入到關系型資料庫中。

Sqoop也是基於Maprece來做的數據導入。

關於sqoop的原理
sqoop的原理比較簡單,就是根據用戶指定的sql或者欄位參數,從資料庫中讀取數據導入到hive或者hdfs中。也支持基於資料庫導出工具導出,不陵槐御過受限於資料庫的版本

在導出的過程中,sqoop會自動切分maprece任務。比如某個欄位的主鍵是從1到1000,那麼當設置num-mappers為2時,第一個mr任務會讀取1-500的數據,第二個mr任務會讀取500-1000的尺岩數據。如果是字元串還有其他的劃分方法.

關明沖於架構
sqoop目前有兩個大版本,第一個版本比較簡單,只能使用命令行

第二個版本引入了sqoop server,統一處理連接等信息,並提供多種連接方式,還引入了許可權控制,另外規范了連接的各項配置。

『貳』 sqoop支持的資料庫有什麼

1、Sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的資料庫(mysql、postgresql...)間進行數據的傳遞,可以將一個關系型資料庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型資料庫中。
2、所以sqoop可以支持大多數的傳統關系型資料庫。如:Mysql、Oracle、Postgres等。

『叄』 怎麼通過sqoop將hdfs上數據導入到mysql

sqoop是一個能把數據在關系型資料庫和HDFS之間互相傳輸的工具。在這里,我寫一下用java 程序來實現sqoop把數據從HDFS寫入到MYSQL。
在接觸sqoop之前,我自己寫了一個傳輸類來實現數據從HDFS到MYSQL。這里簡單說一下時間的思想:
1、在MYSQL中創建一個參數表A,用來記錄要傳輸的表的表名B和欄位。
2、HDFS上的數據的格式和MYSQL中參數表A中B表的欄位的數量一樣。
3、從MYSQL的參數表A中,讀取要傳輸的表B。把這些欄位拼湊成一個insert語句,例如
,拼湊為insert into b(column1,column2..) values(value1,value2...)
4、從HDFS相應的目錄逐行讀取數據,通過JDBC,把數據批量導入到MYSQL的B表中。
我現在用sqoop來代替原來傳輸的那個功能。先做一下准備工作:
1、hadoop的每個節點下lib文件夾中要有mysql的jar包和sqoop的jar包。
2、在HDFS的某個目錄上的數據格式和MYSQL相應的表中的欄位數量一致。
實現類如下:
package sqoop;
import java .util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.sqoop.Sqoop;
import org.apache.sqoop.tool.ExportTool;
/**
* 用SQOOP來把數據從HDFS導入到MYSQL。
* */
public class Test {
public static void main(String[] args) {
List<String> generatedJarsList = new ArrayList<String>();
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://master:9000");
conf.set("hadoop.job.ugi", "hadooper,hadoopgroup");
conf.set("mapred.job.tracker", "master:9001");
ArrayList<String> list = new ArrayList<String>(); //定義一個list
list.add("--table");
list.add("a_baat_client"); //mysql中的表。將來數據要導入到這個表中。
list.add("--export-dir");
list.add("/tmp/datathree/"); //hdfs上的目錄。這個目錄下的數據要導入到a_baat_client這個表中。
list.add("--connect");
list.add("jdbc:mysql://192.168.1.10:3306/report"); //mysql的鏈接
list.add("--username");
list.add("root"); //mysql的用戶名
list.add("--password");
list.add("root"); //mysql的密碼
list.add("--lines-terminated-by");
list.add("\\n"); //數據的換行符號
list.add("-m");
list.add("1");//定義maprece的數量。
String[] arg = new String[1];
ExportTool exporter = new ExportTool();
Sqoop sqoop = new Sqoop(exporter);
sqoop.setConf(conf);
arg = list.toArray(new String[0]);
int result = Sqoop.runSqoop(sqoop, arg);
System.out.println("res:" + result); //列印執行結果。
}
}
這個導出類執行過程中,可以在瀏覽器中看一下http://master:50030頁面。會發現導出數據也是一個把任務轉換為maprece執行的過程。
當然,上面的java代碼,也可以用命令行來實現。命令如下:
bin/sqoop export --connect jdbc:mysql://192.168.1.10:3306/report \
--table a_baat_client --username root --password root \
--export-dir /tmp/datathree/ -m 1
關於sqoop把數據從HDFS導入到MYSQL就說這么多。把數據從HIVE導入到MYSQL,其實可以理解為把HIVE表所對應的HDFS路徑的數據導入到MYSQL,這里就不多說了。

閱讀全文

與sqoop查看資料庫相關的資料

熱點內容
安卓系統微信文件夾 瀏覽:19
xp打開word找不到文件 瀏覽:488
文件名占容量 瀏覽:882
環型槽如何編程 瀏覽:290
excel怎麼分列每一列的第二行數據 瀏覽:240
美味餐廳13安卓版完整 瀏覽:708
請先卸載本地app什麼意思 瀏覽:639
廣東有什麼土建材料網站 瀏覽:613
安卓手機究竟應該給app什麼許可權 瀏覽:137
怎樣給特定文件夾加密碼 瀏覽:168
win10卡在85 瀏覽:421
excel文件怎麼無法打開 瀏覽:970
java文件路徑截取 瀏覽:271
html5公司網站 瀏覽:545
linux內核編譯arm 瀏覽:529
關於如何修改公司章程制度的文件 瀏覽:283
先進企業紅頭文件在哪裡找 瀏覽:546
皮卡堂升級攻略視頻 瀏覽:388
html寬度代碼 瀏覽:919
yy無法輸入密碼 瀏覽:623

友情鏈接