




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEii目錄HYPERLINK1ETL介紹 1-1HYPERLINK2ETL工具介紹 2-2HYPERLINK2.1Kettle 2-2HYPERLINK2.1.1Kettle介紹 2-2HYPERLINK2.1.2Kettle連接各種數(shù)據(jù)源 2-2HYPERLINK2.2Sqoop工具使用 2-17HYPERLINK2.2.1簡介 2-17HYPERLINK2.2.2Oracle導(dǎo)入到Hadoop 2-17HYPERLINK2.3OratoMPP工具使用(Oracle數(shù)據(jù)庫到文件) 2-18HYPERLINK2.3.1簡介 2-18HYPERLINK2.3.2Oracle客戶端安裝 2-18HYPERLINK2.3.3OratoMPP使用 2-24HYPERLINK2.4數(shù)據(jù)庫自帶工具抽取數(shù)據(jù)(數(shù)據(jù)庫到文件) 2-25HYPERLINK2.4.1SQLSERVER使用MicrosoftSQLServerManagementStudio工具 2-25HYPERLINK2.4.2Mysql數(shù)據(jù)導(dǎo)出 2-30HYPERLINK2.4.3PostgreSQL數(shù)據(jù)導(dǎo)出 2-30HYPERLINK2.5數(shù)據(jù)加載(文件到數(shù)據(jù)庫) 2-31HYPERLINK2.5.1MPP數(shù)據(jù)加載 2-31HYPERLINK2.5.2HDFS數(shù)據(jù)加載 2-31HYPERLINK2.5.3Hive數(shù)據(jù)加載 2-31HYPERLINK3場(chǎng)景 3-32HYPERLINK3.1結(jié)構(gòu)化全量數(shù)據(jù)導(dǎo)入到MPP中 3-32HYPERLINK3.1.1Kettle表到表導(dǎo)入 3-32HYPERLINK3.1.2Kettle表到文本再到表導(dǎo)入 3-35HYPERLINK3.1.3Kettle表到文本再使用dispath導(dǎo)入 3-40HYPERLINK3.1.4MPP工具OratoMPP和dispath導(dǎo)入 3-42HYPERLINK3.2結(jié)構(gòu)化增量數(shù)據(jù)導(dǎo)入到MPP中 3-43HYPERLINK3.2.1增量數(shù)據(jù)導(dǎo)入 3-44HYPERLINK3.2.2Updata(修改)數(shù)據(jù)導(dǎo)入 3-48HYPERLINK3.2.3文本數(shù)據(jù)自動(dòng)更新導(dǎo)入 3-48HYPERLINK4FAQ 4-50HYPERLINK4.1MPP工具獲取方法 4-50HYPERLINK4.2如何獲取SQL建表語句 4-50HYPERLINK4.3kettle遇到錯(cuò)誤就會(huì)中斷的解決方法 4-52HYPERLINK4.4SQLServer數(shù)據(jù)導(dǎo)出UTF-8出錯(cuò) 4-53HYPERLINK4.5換行符問題 4-5469ETL介紹ETL方法可分為兩大類方法一:優(yōu)點(diǎn):一:數(shù)據(jù)不落地,直接從源導(dǎo)入到目標(biāo),使用JDBC連接只要有JDBC驅(qū)動(dòng)即可,連接方式較為簡單二:建立ETL規(guī)則針對(duì)每一條數(shù)據(jù),做數(shù)據(jù)驗(yàn)證清理三:在有增量抽取的前提下(數(shù)據(jù)有時(shí)間戳可判斷哪些是增量),可通過建立規(guī)則達(dá)到增量抽取,并且易于定時(shí)處理缺點(diǎn):一:大規(guī)模抽取速度遠(yuǎn)不如原生抽取工具,簡單舉例子可能ETL每秒可能只能出去10M到30M,而方法二可抽取100M以上的數(shù)據(jù),相差10倍以上方法二:優(yōu)點(diǎn):一:抽取性能以及加載性能由于使用原生態(tài)工具,直接使用底層CAPI接口,遠(yuǎn)快于JDBC等ETL工具的速度,適合首次大數(shù)據(jù)量遷移二:開發(fā)能力強(qiáng)可適當(dāng)通過程序手段控制抽取和加載工具,可實(shí)現(xiàn)數(shù)據(jù)的高速抽取加載以及增量抽取和數(shù)據(jù)清理缺點(diǎn):一:數(shù)據(jù)要落地為文本文檔,增加一點(diǎn)數(shù)據(jù)遷移時(shí)間,所以上面只出最好是大數(shù)據(jù)量首次加載二:對(duì)常用數(shù)據(jù)庫的數(shù)據(jù)遷移工具要有一定的了解,如Oracle數(shù)據(jù)庫需要安裝客戶端才可以使用高速的導(dǎo)出工具,對(duì)沒有安裝過的人有一定的難度ETL工具介紹KettleKettle介紹什么是SpoonKettle是”KettleE.T.T.L.Envirnonment”只取首字母的縮寫。這意味著它被設(shè)計(jì)用來幫助你實(shí)現(xiàn)你的ETTL需要:抽取、轉(zhuǎn)換、裝入和加載數(shù)據(jù)。Spoon是一個(gè)圖形用戶界面,它允許你運(yùn)行轉(zhuǎn)換或者任務(wù),其中轉(zhuǎn)換是用Pan工具來運(yùn)行,任務(wù)是用Kitchen來運(yùn)行。Pan是一個(gè)數(shù)據(jù)轉(zhuǎn)換引擎,它可以執(zhí)行很多功能,例如:從不同的數(shù)據(jù)源讀取、操作和寫入數(shù)據(jù)。Kitchen是一個(gè)可以運(yùn)行利用XML或數(shù)據(jù)資源庫描述的任務(wù)。通常任務(wù)是在規(guī)定的時(shí)間間隔內(nèi)用批處理的模式自動(dòng)運(yùn)行。安裝目前大數(shù)據(jù)軟件DataEngine-V100R001B01D006SP2最新版本已經(jīng)集成了Kettle工具,部署DataEngine平臺(tái)時(shí)候可以選擇Kettle組件,自動(dòng)完成安裝。如果要運(yùn)行在其它主機(jī)上,軟件版本可以從公司FTP上下載。注意:如果運(yùn)行在其它主機(jī)上,必須安裝Sun公司的JAVA運(yùn)行環(huán)境1.4或者更高版本,相關(guān)資源你可以從\o"JDK下載"上下載。運(yùn)行SpoonDataEngine平臺(tái):通過xshell后臺(tái)直接運(yùn)行Kettle就可以啟動(dòng)。運(yùn)行在非DataEngine平臺(tái):下面是在不同的平臺(tái)上運(yùn)行Spoon所支持的腳本:Spoon.bat: 在windows平臺(tái)運(yùn)行Spoon。Spoon.sh:在Linux、AppleOSX、Solaris平臺(tái)運(yùn)行Spoon。資源庫一個(gè)Kettle資源庫可以包含那些轉(zhuǎn)換信息,這意味著為了從數(shù)據(jù)庫資源中加載一個(gè)轉(zhuǎn)換,你必須連接相應(yīng)的資源庫。要實(shí)現(xiàn)這些,你需要在資源庫中定義一個(gè)數(shù)據(jù)庫連接,你可以在Spoon啟動(dòng)的時(shí)候,利用資源庫對(duì)話框來定義。Kettle連接各種數(shù)據(jù)源通用連接方法第一步在打開的kettle窗口界面中,找到左側(cè)的主對(duì)象樹,右鍵“轉(zhuǎn)換”,新建一個(gè)轉(zhuǎn)換。圖SEQ圖\*ARABIC4、新建轉(zhuǎn)換第二步依然在左側(cè)的主對(duì)象樹中找到DB連接,右鍵新建一個(gè)DB連接(如果不熟悉可以使用新建數(shù)據(jù)連接向?qū)В?。圖SEQ圖\*ARABIC5、新建數(shù)據(jù)庫連接 然后在彈出的窗口中按照向?qū)崾疽徊揭徊絼?chuàng)建一個(gè)Oracle數(shù)據(jù)庫連接。圖SEQ圖\*ARABIC6、成功創(chuàng)建Oracle數(shù)據(jù)庫連接另外還需要注意的是,這樣簡單創(chuàng)建的數(shù)據(jù)庫連接的字符集是默認(rèn)的,可能會(huì)出現(xiàn)亂碼的現(xiàn)象,為了避免亂碼現(xiàn)象出現(xiàn),可以為JDBC連接配置字符集參數(shù)。Kettle連接Oracle數(shù)據(jù)源Kettle連接MSSQLserverSQLServer的數(shù)據(jù)庫名稱和示例名稱需要和客戶確認(rèn),有可能不需要示例名稱。Kettle連接MPP現(xiàn)在版本已經(jīng)集成了MPP的驅(qū)動(dòng)包(mpp-connector-java-1-build-53.2-bin),連接方式直接選擇MPP的連接即可,并且要提高加載速度需要配置MPP的批量加載功能,在選項(xiàng)中加入?yún)?shù)rewriteBatchedStatements值是true即可。Kettle連接MySqlKettle連接postgre,greemplum,hawqKettle連接HBase,Hadoop(非DataEngine部署的kettle)1.登錄H3CDataEngineManager,通過其配置下載功能下載以下文件:core-site.xmlhdfs-site.xmlyarn-site.xml將下載到的三個(gè)文件放置到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp22\目錄下,若已存在則覆蓋。并在該目錄中找到perties文件,打開后,根據(jù)當(dāng)前H3CDataEngineHadoop的版本及其他信息更改該文件的內(nèi)容。圖SEQ圖\*ARABIC16、更改perties文件內(nèi)容由于xml文件中描述的Hadoop集群節(jié)點(diǎn)都是使用了主機(jī)名,所以需要將集群中的主機(jī)映射關(guān)系在本地也映射一遍。打開系統(tǒng)hosts文件C:\Windows\System32\drivers\etc\hosts,將集群中的IP與主機(jī)映射關(guān)系寫入。圖SEQ圖\*ARABIC17、插入主機(jī)映射關(guān)系重啟Spoon,然后再頂部菜單欄點(diǎn)擊“工具——>HadoopDistribution...”,然后在彈出的窗口中選擇“H3CDataEngineHadoop2.3.x”。圖SEQ圖\*ARABIC18、選擇Hadoop套件版本2.在Spoon左側(cè)主對(duì)象樹中找到HadoopCluster,右鍵新建。在彈出的窗口中正確的填入Hadoop集群信息,然后點(diǎn)擊“測(cè)試”按鈕。圖SEQ圖\*ARABIC19、新建Hadoop集群訪問對(duì)象點(diǎn)擊測(cè)試后,將彈出測(cè)試結(jié)果,本場(chǎng)景僅需如下圖的測(cè)試結(jié)果即可執(zhí)行:圖SEQ圖\*ARABIC20、Hadoop集群連接創(chuàng)建測(cè)試結(jié)果Kettle連接HBase,Hadoop(DataEngine部署的kettle)直接打開kettle,在主對(duì)象樹的轉(zhuǎn)換下面有hadoopclusters的一個(gè)集群默認(rèn)配置打開測(cè)試連接可以直接測(cè)試成功,所以hbase和hadoop的連接可以直接使用這個(gè)default即可。Sqoop工具使用(不需要安裝orc客戶端)簡介在使用Sqoop之前需要把相應(yīng)的數(shù)據(jù)庫的JDBC驅(qū)動(dòng)放入/usr/hdp/-3485/sqoop/lib/并且由于權(quán)限問題,建議使用hdfs用戶執(zhí)行sqoop相關(guān)命令注意:hdp版本號(hào)可能根據(jù)版本的升級(jí)而變化Oracle導(dǎo)入到HadoopOracle導(dǎo)入到HDFSsqoopimport--connectjdbc:oracle:thin:@:1521:orcl--usernamehr--passwordhr--tableJOBS--target-dir'/tmp/aa'--fields-terminated-by':'-m3Su-hdfs(沒有密碼)sqoopimport--connectjdbc:oracle:thin:@2:1521:orcl--usernamepqf--password12345678--tableJN1--target-dir'/tmp/aa'--fields-terminated-by':'-m3:1521oracle數(shù)據(jù)IP和端口orcl:數(shù)據(jù)庫實(shí)例--table:表名--username:數(shù)據(jù)庫用戶名--password:數(shù)據(jù)庫密碼-m為Hadoop集群數(shù)量(并行度)--fileds-terminated-by數(shù)據(jù)文件分隔符--target-dir會(huì)在tmp目錄下創(chuàng)建一個(gè)aa目錄,放置導(dǎo)出的數(shù)據(jù)文件Oracle導(dǎo)入Hbase直接創(chuàng)建HBase表sqoopimport--connectjdbc:oracle:thin:@:1521:orcl--usernamehr--passwordhr--tableJOBS--hbase-create-table--hbase-tablejobs--column-familyinfo1--hbase-row-keyJOB_ID-m3--hbase-create-table:若hbase中不存在需要導(dǎo)入的表,則需要加添加該參數(shù)進(jìn)行創(chuàng)建。--hbase-table:hbase的表名--column-family:列簇名--hbase-row-key:指定原表中的一列為key值Oracle導(dǎo)入到Hivesqoopimport--connectjdbc:oracle:thin:@:1521:orcl--usernamehr--passwordhr--tableJOBS--hive-tablejobs--hive-import--fields-terminated-by'|'-m3OratoMPP工具使用(Oracle數(shù)據(jù)庫到文件)簡介OratoMPP是一個(gè)可以快速、高效地從oracle數(shù)據(jù)庫系統(tǒng)中抽取數(shù)據(jù),并將數(shù)據(jù)保存到指定文件中的專用工具。并且OratoMPP還提供查詢語句導(dǎo)出和全表導(dǎo)出兩種方式,其中全表導(dǎo)出的登錄用戶需要對(duì)dba_extents、dba_objects和dba_tables這三張表有select權(quán)限。OratoMPP工具所在的服務(wù)器需要支持能夠訪問oracle,所以需要先安裝好oracle客戶端,再將工具上傳到服務(wù)器才能正常使用。Oracle客戶端安裝本章主要為客戶講解如何在Linux操作系統(tǒng)中安裝oracle客戶端,安裝它的目的就是為了使用OratoMPP這個(gè)數(shù)據(jù)抽取工具。通常,我們建議在安裝有oracle客戶端的物理機(jī)器上,使用OratoMPP這個(gè)工具。說明:集群的安裝包中不提供oracle客戶端程序,本章描述僅用于參考。下面以安裝平臺(tái)為Linux,使用oracle11g客戶端進(jìn)行安裝為例介紹安裝步驟。獲取安裝文件Linux操作系統(tǒng)中的oracle的客戶端安裝包文件,通常是rpm包。完整的oracle客戶端安裝包一共包含如下幾個(gè)安裝包文件:oracle-instantclient11.2-basic-.0-1.x86_64.rpmoracle-instantclient11.2-sqlplus-.0-1.x86_64.rpmoracle-instantclient11.2-devel-.0-1.x86_64.rpm上面的安裝包文件,可以訪問oracle的官方網(wǎng)站,從網(wǎng)站上下載。我們也已經(jīng)上傳到FTP服務(wù)器上可以下載。創(chuàng)建用戶在裝有Linux操作系統(tǒng)的機(jī)器上,首先切換到root,創(chuàng)建一個(gè)新的操作系統(tǒng)用戶。示例:創(chuàng)建一個(gè)oracli用戶。$su密碼:#/usr/sbin/useraddoracle#passwdoracleChangingpasswordforuseroracleNewpassword:Retypenewpassword:passwd:allauthenticationtokensupdatedsuccessfully.創(chuàng)建目錄按照上一小節(jié)中的介紹,如果成功的創(chuàng)建用戶后,我們接下來的工作,就是需要?jiǎng)?chuàng)建所需要的目錄。示例:使用root用戶,創(chuàng)建目錄,并修改目錄的權(quán)限su–root密碼:#mkdir-p/home/oracle/network/admin#chown-Roracle:oracle/home/oracle#chmod-R755/home/oracle拷貝并修改tnsnames.ora文件我們需要將oracle服務(wù)器上面的tnsnames.ora這個(gè)文件拷貝裝有oracle客戶端機(jī)器上的/home/oralci/network/admin這個(gè)目錄下面。查看oracle服務(wù)器端的機(jī)器中(2)的tnsnames.ora[oracle@linux6admin]$ll/u01/app/oracle/product/11g/db_1/network/admin/tnsnames.ora-rw-r1oracleoinstall504Dec1618:41/u01/app/oracle/product/11g/db_1/network/admin/tnsnames.ora在客戶端(4)機(jī)器上使用scp命令拷貝文件。[root@node4/]#scproot@2:/u01/app/oracle/product/11g/db_1/network/admin/tnsnames.ora/home/oracli/network/adminTheauthenticityofhost'2(2)'can'tbeestablished.RSAkeyfingerprintisfc:af:fb:d6:54:c5:c8:0d:c5:90:b3:2f:97:4a:fc:dc.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded'2'(RSA)tothelistofknownhosts.root@2'spassword:tnsnames.ora100%5040.5KB/s00:00由于使用root用戶進(jìn)行的scp拷貝,因此拷貝結(jié)束后,依舊需要修改tnsnames.ora權(quán)限#chown-Roracle:oracle/home/oracle#chmod-R755/home/oracle切換為oracli用戶,查看tnsnames.ora內(nèi)容su–oracli$cat/home/oracli/network/admin/tnsnames.ora#tnsnames.oraNetworkConfigurationFile:/opt/oracle/product/10g/network/admin/tnsnames.ora#GeneratedbyOracleconfigurationtools.ORCL=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))EXTPROC_CONNECTION_DATA=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))(CONNECT_DATA=(SID=PLSExtProc)(PRESENTATION=RO)))在tnsnames.ora中,需要將HOST=localhost中的localhost修改為oracle服務(wù)器端的IP,例如:2。PORT=1521是oracle默認(rèn)使用的端口,如果發(fā)生變化,也需要修改。SERVICE_NAME=orcl中orcl是服務(wù)名,使用sqlplus64登錄時(shí),需要使用它。該文件像現(xiàn)場(chǎng)客戶索取。使用vi命令修改IP地址,修改完畢后:wq保存退出。PORT端口使用默認(rèn)的1521端口,無需修改。vitnsnames.ora#tnsnames.oraNetworkConfigurationFile:/opt/oracle/product/10g/network/admin/tnsnames.ora#GeneratedbyOracleconfigurationtools.ORCL=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=2)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl.5)))EXTPROC_CONNECTION_DATA=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))(CONNECT_DATA=(SID=PLSExtProc)(PRESENTATION=RO)))說明:因?yàn)樵撐募菑膐racle服務(wù)器端拷貝過來的,因此,一旦oracle服務(wù)器端的該文件的配置發(fā)生變化,例如增加了服務(wù)名,刪除了服務(wù)名,我們建議重新拷貝至客戶端的/home/oracli/network/admin/路徑下,并修改每個(gè)服務(wù)名中的HOST的IP地址值。如果端口發(fā)生變化,也要修改PORT的端口值。安裝客戶端的rpm包使用root用戶進(jìn)行rpm包的安裝,由于rmp包之間的依賴關(guān)系,因此oracle客戶端rpm包的安裝順序如下:oracle-instantclient11.2-basic-.0-1.x86_64.rpmoracle-instantclient11.2-sqlplus-.0-1.x86_64.rpmoracle-instantclient11.2-devel-.0-1.x86_64.rpm示例:安裝rpm包[root@node4~]#rpm-ivhoracle-instantclient11.2-basic-.0-1.x86_64.rpmPreparing...###########################################[100%]1:oracle-instantclient11.###########################################[100%][root@node4~]#rpm-ivhoracle-instantclient11.2-sqlplus-.0-1.x86_64.rpmPreparing...###########################################[100%]1:oracle-instantclient11.###########################################[100%][root@node4~]#rpm-ivhoracle-instantclient11.2-devel-.0-1.x86_64.rpmPreparing...###########################################[100%]1:oracle-instantclient11.###########################################[100%]若出現(xiàn)安裝basic包如下報(bào)錯(cuò),說明環(huán)境中沒有安裝libaio包。[root@node4~]#rpm-ivhoracle-instantclient11.2-basic-.0-1.x86_64.rpmerror:Faileddependencies: libaioisneededbyoracle-instantclient11.2-basic-.0-1.x86_64可以使用yum源安裝libaio的方式進(jìn)行安裝,安裝完成后即可正常安裝basic包了。[root@node4~]#yuminstalllibaio*Loadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfileDataEnginerepo|2.9kB00:00HDP-2.3|2.9kB00:00HDP-UTILS-0|2.9kB00:00cdrom|2.9kB00:00supportrepo|2.9kB00:00SettingupInstallProcessResolvingDependencies-->Runningtransactioncheck>Packagelibaio.x86_640:0.3.107-10.el6willbeinstalled>Packagelibaio-devel.x86_640:0.3.107-10.el6willbeinstalled-->FinishedDependencyResolution配置客戶端用戶的.bash_profile文件用戶還需要修改客戶端用戶下“.bash_profile”文件的配置信息,將下面的配置信息添加到.bash_profile文件中。exportORACLE_HOME=/usr/lib/oracle/11.2/client64exportSQLPATH=/usr/lib/oracle/11.2/client64/binexportTNS_ADMIN=/home/oracli/network/adminexportLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/libexportPATH=$PATH:$ORACLE_HOME:$LD_LIBRARY_PATHexportNLS_LANG=AMERICAN_AMERICA.AL32UTF8示例:$cd/home/oracli$vi.bash_profile#.bash_profile#Getthealiasesandfunctionsif[-f~/.bashrc];then.~/.bashrcfi#UserspecificenvironmentandstartupprogramsPATH=$PATH:$HOME/binexportPATHexportORACLE_HOME=/usr/lib/oracle/11.2/client64exportSQLPATH=/usr/lib/oracle/11.2/client64/binexportTNS_ADMIN=/home/oracli/network/adminexportLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/libexportPATH=$PATH:$ORACLE_HOME:$LD_LIBRARY_PATHexportNLS_LANG=AMERICAN_AMERICA.AL32UTF8保存退出后,使用source命令是配置文件生效。$source.bash_profile測(cè)試連接oracle所有的安裝,配置工作結(jié)束后,可以測(cè)試oracle客戶端是否可以連接了。oracle服務(wù)器端IP:2oracle的登錄用戶和密碼:zzh/123456oracle的服務(wù)名;orcl使用sqlplus64命令連接oracle。示例如下:sqlplus64/nologSQL*Plus:Release.0-ProductiononFriOct1811:18:042013Copyright(c)1982,2010,Oracle.AllRightsReserved.SQL>connzzh/123456@//2/orcl.5Connected.SQL>connzzh/123456@//2/orcl.5connpqf/12345678@//2/orcl.5OratoMPP使用執(zhí)行OratoMPP,將table_name參數(shù)設(shè)置要導(dǎo)出的表名,parallel參數(shù)可設(shè)置并行度(<=CPU核數(shù)),即可快速導(dǎo)出全表數(shù)據(jù)。./OratoMPP--user='user/passwd@2:1521/orcl'--query="select*FROMlineorder"--file='./lineorder.txt'--field=";"--format=3--parallel=4./OratoMPP--user='pqf/12345678@2:1521/orcl'--query="select*FROMt1"--file='./t1.txt'--field=";"--format=3--parallel=4注釋:用戶名:user,密碼:passwd,oracleSID:orcl,查詢:select*fromlineorder輸出文件:當(dāng)前目錄下lineorder.txt,分隔符:分號(hào)樣式format默認(rèn)為3沒有轉(zhuǎn)移字符。具體的OratoMPP的使用建議參考《H3CDataEngineMPP數(shù)據(jù)抽取及加載工具參考手冊(cè)》。數(shù)據(jù)庫自帶工具抽取數(shù)據(jù)(數(shù)據(jù)庫到文件)SQLSERVER使用MicrosoftSQLServerManagementStudio工具在想導(dǎo)出的數(shù)據(jù)庫中右鍵,選擇任務(wù),在選擇導(dǎo)出數(shù)據(jù)選擇test數(shù)據(jù)庫目標(biāo)選擇平面文件,選擇文件名如果只是導(dǎo)出表,可以直接選擇第一個(gè),如果要定制SQL,請(qǐng)選擇第二個(gè)選擇行分隔符,{CR}{LF}一般是window下的,linux下為{LF}可根據(jù)選擇選取可以點(diǎn)擊預(yù)覽查看下數(shù)據(jù)單擊完成,查看運(yùn)行結(jié)果Mysql數(shù)據(jù)導(dǎo)出可采用下面語法導(dǎo)出,建議導(dǎo)出位置為/tmp,因?yàn)閙ysql安裝者可能是mysql用戶,在其他目錄是沒有權(quán)限的select*fromuserINTOOUTFILE'/tmp/log1.txt';PostgreSQL數(shù)據(jù)導(dǎo)出Psql–U用戶名然后輸入密碼登錄\l,查看數(shù)據(jù)庫\c數(shù)據(jù)庫名,登錄數(shù)據(jù)庫\l,查看表名\copy表名to'/tmp/user.csv'withcsv數(shù)據(jù)加載(文件到數(shù)據(jù)庫)MPP數(shù)據(jù)加載關(guān)于dispatch更多更詳細(xì)的參數(shù),請(qǐng)參考《H3CDataEngineMPP數(shù)據(jù)抽取及加載工具參考手冊(cè)》。首先需要解壓dispatch_server-XXX.tar.bz2tarxvfdispatch_server-XXX.tar.bz2啟動(dòng)dispserver服務(wù):./dispserver--port=6666--log-file=./server.log--log-level=4--loader-log-dir=./server-logs&配置ctl加載配置文件[test_lineorder]disp_server=14:6666#IP地址file_list=/home/data/ssbm/1s/lineorder.tbl#數(shù)據(jù)路徑format=3#默認(rèn)sg_list=sg01,sg02,sg03#有幾個(gè)安全組就寫幾個(gè)db_name=test#數(shù)據(jù)庫名table_name=lineorder#表名delimiter='|'#數(shù)據(jù)分隔符socket=/tmp/gbase_8a_5050.sock#默認(rèn)extra_loader_args=--parallel=0#默認(rèn)hash_parallel=6#默認(rèn)啟動(dòng)加載任務(wù):./dispcli–lcase1.log-L4mission.ctlHDFS數(shù)據(jù)加載Hadoopfs–putXX源文件/tmpHadoop目錄Hive數(shù)據(jù)加載Hive本身使用Hdfs存儲(chǔ),可直接使用HDFSput命令到HDFS上,建Hive表時(shí)直接映射到HDFS數(shù)據(jù)路徑場(chǎng)景結(jié)構(gòu)化全量數(shù)據(jù)導(dǎo)入到MPP中以傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫抽取至MPP數(shù)據(jù)庫為例:當(dāng)客戶提供給我們相應(yīng)的連接地址和賬戶密碼時(shí)候,我們常用的數(shù)據(jù)抽取方法有以下:A.使用KETTLE連接數(shù)據(jù)庫將數(shù)據(jù)抽取至MPP。B.使用KETTLE連接數(shù)據(jù)庫將數(shù)據(jù)抽取至文件,再使用KETTLE將數(shù)據(jù)加載至mppC.使用KETTLE連接數(shù)據(jù)庫將數(shù)據(jù)抽取至文件,使用dispserver將數(shù)據(jù)加載至mppD.如果客戶數(shù)據(jù)庫是oracle,安裝oracle客戶端,使用oratompp工具將數(shù)據(jù)導(dǎo)出成文件,使用dispserver將數(shù)據(jù)加載至mpp。方法A的效率比較低,支持各種數(shù)據(jù)庫,優(yōu)勢(shì)在于庫到庫,數(shù)據(jù)不落地,避免了分隔符、日期格式問題和數(shù)據(jù)庫編碼問題,如果不配置批量提交,速度只有幾百條每秒,配置批量提交后,抽取速度根據(jù)實(shí)際環(huán)境大約在幾千條每秒。適用于表數(shù)據(jù)較少,數(shù)據(jù)庫內(nèi)的表較多的場(chǎng)景。方法B和方法C一般用于數(shù)據(jù)需要處理清洗,或者通過數(shù)據(jù)文件的形式進(jìn)行數(shù)據(jù)遷移,方法C是為了解決方法A和B的加載速度慢。方法D僅限oracle數(shù)據(jù)庫,需要安裝oracle客戶端,這是數(shù)據(jù)抽取加載最快的方法,抽取速度受限于oracle數(shù)據(jù)庫效率、網(wǎng)絡(luò)和磁盤IO,根據(jù)編輯數(shù)據(jù)導(dǎo)出語句,可以對(duì)編碼格式、分隔符等進(jìn)行處理,方便數(shù)據(jù)加載MPP。以下涉及Kettle的數(shù)據(jù)庫的連接方法請(qǐng)參考2.1.2章節(jié),不再詳述。Kettle表到表導(dǎo)入新建一個(gè)表輸入點(diǎn)擊左側(cè)“核心對(duì)象”標(biāo)簽,然后在“輸入”類別中找到表輸入。并將該圖標(biāo)拖拽至右側(cè)的轉(zhuǎn)換工作區(qū)域,然后雙擊它,進(jìn)行編輯。新建一個(gè)表輸出點(diǎn)擊左側(cè)“核心對(duì)象”標(biāo)簽,然后在“輸出”類別中找到表輸出。并將該圖標(biāo)拖拽至右側(cè)的轉(zhuǎn)換工作區(qū)域,然后鼠標(biāo)選擇表輸入,按住shift和鼠標(biāo)左鍵(或者鼠標(biāo)中鍵),將表輸入和表輸出連接起來。編輯表輸出若通過第五步獲取建表語句存在問題,可以通過navicat獲取建表語句:執(zhí)行轉(zhuǎn)換即可完成一個(gè)表的ETL,并且可以通過SQL進(jìn)行驗(yàn)證是否完成了數(shù)據(jù)的導(dǎo)入。可以通過selectcount(*)from表名稱;這個(gè)語句在原數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫分別執(zhí)行,查看數(shù)據(jù)行數(shù)是否一致,以便確認(rèn)是否全部導(dǎo)入成功。Kettle表到文本再到表導(dǎo)入新建一個(gè)表輸入和文本文件輸出表輸入?yún)⒖?.1.1,文本文件輸出配置可如下:分割符:設(shè)置為表數(shù)據(jù)中不存在的字符,也可以是多個(gè)字符的組合,比如雙引號(hào)中的“|*|”。頭部:默認(rèn)有勾,可以去掉,去掉后輸出的文本文件就不包含表字段信息,只有數(shù)據(jù)。格式:一般選擇unix,因?yàn)槭莑inux上的數(shù)據(jù)庫,若是windows的sql,可以選擇windows的。編碼:一般選擇UTF-8最小寬度:可能原數(shù)據(jù)中是空值,但是由于是Oracle則其輸出的文本就會(huì)以很多空格的方式輸出,這樣不僅造成文本較大,輸出較慢,也會(huì)導(dǎo)致加載到MPP占用空間并且較慢,因此點(diǎn)擊最小寬度可以解決這個(gè)問題。最后執(zhí)行即可將數(shù)據(jù)導(dǎo)出到指定的文件中。新建一個(gè)文本文件輸入和一個(gè)表輸出:表輸出的參考3.1.1章節(jié),文本文件輸入?yún)⒖既缦拢悍指罘?、頭部、格式、編碼等按照之前的進(jìn)行設(shè)置:關(guān)于表輸出,在數(shù)據(jù)庫字段處可以自己進(jìn)行一對(duì)一的定義,確保數(shù)據(jù)加載正確:最后執(zhí)行轉(zhuǎn)換任務(wù)即可查看加載結(jié)果。Kettle表到文本再使用dispath導(dǎo)入kettle將數(shù)據(jù)抽取到文本文檔此步驟參考3.1.2,此處不做描述。在MPP中建表:獲取dispatch文件:[root@node4data]#tarxvfdispatch_server-_build11.5_r9.7_2_4.A-redhat6.2-x86_64.tar.bz2dispatch_server/dispatch_server/dispserverdispatch_server/dispcli啟動(dòng)dispserver:[root@node4dispatch_server]#./dispserver--port=6666--log-file=./opt/log/server.log--log-level=4--loader-log-dir=./opt/log/server-logs&[1]76122[root@node4dispatch_server]#psaux|grepdispserverroot761220.00.01783603920pts/1Sl17:300:00./dispserver--port=6666--log-file=./opt/log/server.log--log-level=4--loader-log-dir=./opt/log/server-logsroot761330.00.0103244860pts/1S+17:300:00grepdispserver編輯加載控制文件:[student_lineorder]disp_server=4:6666file_list=/opt/data/student.txtformat=3sg_list=sg01,sg02db_name=h3c_testtable_name=studentdelimiter='|'socket=/tmp/gbase_8a_5050.sockextra_loader_args=--parallel=0hash_parallel=6啟動(dòng)加載:./dispcli-l/opt/log/dispcli/dispcli.log-L4-h5/opt/data/dispatch_server/student.ctlStartmission[student_lineorder]indispatchmode...[7][STARTTIME:2016-12-239:37:24][N/A][RATE:57.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[5][STARTTIME:2016-12-239:37:24][N/A][RATE:57.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[5][STARTTIME:2016-12-239:37:24][N/A][RATE:57.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[7][STARTTIME:2016-12-239:37:24][N/A][RATE:57.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[6][STARTTIME:2016-12-239:37:24][N/A][RATE:41.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[8][STARTTIME:2016-12-239:37:24][N/A][RATE:41.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[8][STARTTIME:2016-12-239:37:24][N/A][RATE:38.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[6][STARTTIME:2016-12-239:37:24][N/A][RATE:38.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...Dispatchmission[2]finished:loaded10records,skipped0recordsMPP工具OratoMPP和dispath導(dǎo)入準(zhǔn)備OratoMPP運(yùn)行環(huán)境OratoMPP的環(huán)境準(zhǔn)備工作參考2.3章節(jié)。使用OratoMPP從Oracle數(shù)據(jù)庫中抽取數(shù)據(jù)成文本文檔[root@node4~]#./OratoMPP--user='zzh/123456@2:1521/orcl.5'--query="select*FROMteacher"--file='/opt/data/teacher.txt'--field="|"--format=3--parallel=4exportcolumns:2exportrows:3exporttime:0secprocessok!在MPP中建表略,參考3.1.3章節(jié)。編輯加載控制文件:[teacher_lineorder]disp_server=4:6666file_list=/opt/data/teacher.txtformat=3sg_list=sg01,sg02db_name=h3c_testtable_name=teacherdelimiter='|'socket=/tmp/gbase_8a_5050.sockextra_loader_args=--parallel=0hash_parallel=6啟動(dòng)加載:[root@node4dispatch_server]#./dispcli-l/opt/log/dispcli/dispcli.log-L4-h5/opt/data/dispatch_server/teacher.ctlStartmission[teacher_lineorder]indispatchmode...[7][STARTTIME:2016-12-2312:30:9][N/A][RATE:15.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[5][STARTTIME:2016-12-2312:30:9][N/A][RATE:15.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[5][STARTTIME:2016-12-2312:30:9][N/A][RATE:12.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[7][STARTTIME:2016-12-2312:30:9][N/A][RATE:12.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[6][STARTTIME:2016-12-2312:30:9][N/A][RATE:12.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[8][STARTTIME:2016-12-2312:30:9][N/A][RATE:12.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[6][STARTTIME:2016-12-2312:30:9][N/A][RATE:0.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...[8][STARTTIME:2016-12-2312:30:9][N/A][RATE:0.00/s][DONE][BADREC:0][ETA:N/A][ELAPSED:0sec]...Dispatchmission[4]finished:loaded3records,skipped0records結(jié)構(gòu)化增量數(shù)據(jù)導(dǎo)入到MPP中增量數(shù)據(jù)導(dǎo)入從oracle數(shù)據(jù)庫同步數(shù)據(jù)到mpp數(shù)據(jù)庫,需要有合理的機(jī)制來判斷oracle數(shù)據(jù)庫的數(shù)據(jù)更新和操作,可以是數(shù)據(jù)庫日志,也可是是數(shù)據(jù)內(nèi)容,其中數(shù)據(jù)內(nèi)容可以是自增漲的ID列,序號(hào),也可以是時(shí)間戳,這里就以常用的時(shí)間戳判斷來進(jìn)行數(shù)據(jù)更新示例:首先從第一個(gè)表輸入中獲取MPP中最后的數(shù)據(jù),此用例為時(shí)間戳,因此判斷時(shí)間戳的最大值為最后更新的數(shù)據(jù)。在第二步oracle表輸入中,查詢表中的所有數(shù)據(jù),后面增加條件,判斷該時(shí)間戳大于“?”,在下面勾選“替換SQL語句里的變量”,在“從步驟中插入數(shù)據(jù)”選擇前面一個(gè)步驟的名稱,這樣函數(shù)就代表了前面查出來的數(shù)值,查出大于該時(shí)間戳的所有值。為了避免數(shù)據(jù)庫內(nèi)有錯(cuò)誤的時(shí)間戳,提高數(shù)據(jù)準(zhǔn)確性,提高查詢效率,可以增加語句讓該時(shí)間戳小于當(dāng)前系統(tǒng)時(shí)間。 這樣一個(gè)轉(zhuǎn)換就會(huì)查詢最新的數(shù)據(jù)到MPP中,然后建立一個(gè)作業(yè),設(shè)置為定時(shí)任務(wù),每隔一段時(shí)間或者每天定時(shí)執(zhí)行該轉(zhuǎn)換任務(wù),讓數(shù)據(jù)在控制的頻率內(nèi)同步到MPP中。當(dāng)每天新增數(shù)據(jù)量較大時(shí),數(shù)據(jù)庫到庫的抽取效率可能無法滿足同步需求,因此我們可以將上述過程優(yōu)化,先將需要的數(shù)據(jù)抽取至本地文件,然后調(diào)用shell腳本執(zhí)行dispserver加載任務(wù),執(zhí)行完后刪除數(shù)據(jù)文件,完成一次數(shù)據(jù)同步轉(zhuǎn)換Shell腳本的編寫:勾選插入腳本,選擇其工作路徑然后將dispcli的命令輸入到腳本欄中即可。Updata(修改)數(shù)據(jù)導(dǎo)入對(duì)于源數(shù)據(jù)庫中的某個(gè)表,若其中的數(shù)據(jù)經(jīng)常是發(fā)生修改,而增加的較少。若表較小,則可以采用清空表再全量導(dǎo)入的方式來完成數(shù)據(jù)的“增量”導(dǎo)入。如下:使用sql語句truncatetablename;可以清空表信息,然后執(zhí)行一次全量導(dǎo)入的轉(zhuǎn)換,即可完成表更新。文本數(shù)據(jù)自動(dòng)更新導(dǎo)入應(yīng)用場(chǎng)景:銀行內(nèi)的某業(yè)務(wù)數(shù)據(jù)庫,增量數(shù)據(jù)都是每天由總行下發(fā),以壓縮文件的方式獲取到。原來的數(shù)據(jù)導(dǎo)入方式是直接將該壓縮文件傳到ftp上,然后運(yùn)行腳本實(shí)現(xiàn)導(dǎo)入。增量文件分為3種類型:
1)新加入的數(shù)據(jù)文件,該類型是直接通過sqlinsert到表中。
2)原始數(shù)據(jù)的更新,即update類型的數(shù)據(jù),這類數(shù)據(jù)客戶實(shí)現(xiàn)并不是通過update的方式進(jìn)行更新,而是通過判斷主鍵的方式,刪除原始數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù),然后將新的數(shù)據(jù)insert進(jìn)來。
3)緯度表的更新,既有新數(shù)據(jù),又有老數(shù)據(jù)的更新,直接清空原數(shù)據(jù)表,然后將新的數(shù)據(jù)插入到表中。腳本實(shí)現(xiàn)機(jī)制1)執(zhí)行work.sh腳本,腳本調(diào)用gzip解壓客戶原始數(shù)據(jù)文件。
2)再分別調(diào)用getfilename.sh腳本和gettbname.sh這2個(gè)腳本獲取文件名和表名
3)接著通過之前獲取到的表名,通過調(diào)用ctl.sh腳本創(chuàng)建數(shù)據(jù)加載控制文件
4)啟動(dòng)加載,使用第三步的控制文件將數(shù)據(jù)加載到臨時(shí)表中。
5)最后將原始數(shù)據(jù)文件增加以時(shí)間為后綴的文件,方便后續(xù)查看原始數(shù)據(jù)。調(diào)用存儲(chǔ)過程經(jīng)過之前的將新的數(shù)據(jù)加載到臨時(shí)表后,通過創(chuàng)建的存儲(chǔ)過程將臨時(shí)表中的數(shù)據(jù)導(dǎo)入到正式表中,依據(jù)三種情況進(jìn)行導(dǎo)入加載
1)新加入的數(shù)據(jù)文件,該類型是直接通過sqlinsert到表中。
2)原始數(shù)據(jù)的更新,即update類型的數(shù)據(jù),這類數(shù)據(jù)客戶實(shí)現(xiàn)并不是通過update的方式進(jìn)行更新,而是通過判斷主鍵的方式,刪除原始數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù),然后將新的數(shù)據(jù)insert進(jìn)來。
3)緯度表的更新,既有新數(shù)據(jù),又有老數(shù)據(jù)的更新,直接清空原數(shù)據(jù)表,然后將新的數(shù)據(jù)插入到表中。
4)數(shù)據(jù)加載完成后,創(chuàng)建一個(gè)加載log日志表,將加載的表名稱,表?xiàng)l數(shù),加載時(shí)間寫入到log表中,方便后續(xù)查看。ETL數(shù)據(jù)到Hadoop結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入抽取EXCEL數(shù)據(jù)至HBase注意:此方法適用于大部分結(jié)構(gòu)化數(shù)據(jù)場(chǎng)景,只需要對(duì)獲取原數(shù)據(jù)的方式進(jìn)行變更即可,比如可以通過kettle表輸入方式獲取原數(shù)據(jù),oracle則可以通過OratoMPP抽取數(shù)據(jù)到文本,等等方式都可以實(shí)現(xiàn)。第一步配置集群,詳情參照2.1.2章節(jié)kettle連接hbase。第二步在Spoon左側(cè)“主對(duì)象樹”中找到“HadoopCluster”,并右鍵新建。然后,在彈出的窗口中填入正確的集群信息。詳情參考2.1.2章節(jié)。第三步在Spoon窗體左側(cè)“核心對(duì)象”標(biāo)簽的“輸入”類別下找到Excel輸入,并將其拖拽至右側(cè)工作區(qū)域,雙擊進(jìn)行編輯。 在彈出的編輯窗口中點(diǎn)擊“瀏覽”按鈕,從文件系統(tǒng)中選擇需要輸入的Excel文件。然后點(diǎn)擊“增加”按鈕。圖SEQ圖\*ARABIC25、選擇需要輸入的Excel文件在同窗口內(nèi)容切換至“工作表”標(biāo)簽,點(diǎn)擊“獲取工作表”,然后選擇輸入數(shù)據(jù)所在的工作表。圖SEQ圖\*ARABIC26、獲取工作表切換至“字段”標(biāo)簽頁,點(diǎn)“擊獲取來自頭部的字段..”按鈕,最后點(diǎn)擊預(yù)覽記錄,若預(yù)覽數(shù)據(jù)內(nèi)容無誤,則“Excel輸入”配置完成。圖SEQ圖\*ARABIC27、配置Excel輸入的字段第四步登錄Hadoop集群,使用HBaseshell創(chuàng)建目標(biāo)表結(jié)構(gòu)。在這個(gè)例子中我們的創(chuàng)建命令如下:切換到hbase用戶:su–hbase進(jìn)入hbase命令行:hbaseshell創(chuàng)建t1表,列簇f1:create't1','f1'創(chuàng)建僅含一個(gè)列簇“f1”的表t1。圖SEQ圖\*ARABIC28、創(chuàng)建HBase目標(biāo)表第五步從Spoon窗口左側(cè)“核心對(duì)象”標(biāo)簽下的“BigData”類別中找到HBaseOutput,將其拖拽至窗口右側(cè)工作區(qū)域。然后使用鼠標(biāo)中鍵,從“Excel輸入”拖拽至“HBaseOutput”,建立兩者的連接。然后雙擊“HBaseOutput”,進(jìn)行編輯。在編輯頁面,首先選擇configureconnection界面,選擇hadoopcluster集群為Default集群。再選擇“Create/Editmappings”,然后輸入事先創(chuàng)建好的HBase表“t1”,創(chuàng)建表字段映射關(guān)系“m1”。然后點(diǎn)擊“Getincomingfields”按鈕,在自動(dòng)生成的映射關(guān)系中選擇正確的列簇,選擇作為key的列值為yes。在本例子中,所有的列都在同一個(gè)列簇“f1”上。最后,點(diǎn)擊“Savemapping”,該映射關(guān)系m1將被存儲(chǔ)至HBase表“pentaho_mappings”中。圖SEQ圖\*ARABIC29、創(chuàng)建字段映射關(guān)系圖SEQ圖\*ARABIC30、存儲(chǔ)在HBase中的映射關(guān)系映射關(guān)系存儲(chǔ)成功后,在“HBaseOutput”編輯頁面中,選擇“Configureconnection”標(biāo)簽。然后選擇第二步創(chuàng)建的Hadoopcluster,并將“HBasetablename”與“ Mappingname”,填入前面預(yù)設(shè)好的值。(該處需要注意的是Hadoopcluster與hbase-site.xml不能同時(shí)共存,否則會(huì)出問題)圖SEQ圖\*ARABIC31、編輯HBaseOutput第六步按下F9,在彈出窗口中按下“啟動(dòng)”按鈕。細(xì)節(jié)請(qǐng)參考3.1.6章節(jié)。第七步圖SEQ圖\*ARABIC32、確認(rèn)加載過程成功與否登錄Hadoop集群,使用HBaseshell查詢“t1”表,確認(rèn)數(shù)據(jù)是否Load成功。圖SEQ圖\*ARABIC33、確認(rèn)HTable是否加載數(shù)據(jù)成功抽取Oracle數(shù)據(jù)至HDFS步驟一:配置Oracle表輸入點(diǎn)擊Spoon窗口左側(cè)“核心對(duì)象”標(biāo)簽,然后在“輸入”類別中找到“表輸入”。并將該圖標(biāo)拖拽至右側(cè)的轉(zhuǎn)換工作區(qū)域,然后雙擊它,進(jìn)行編輯。數(shù)據(jù)庫連接選擇創(chuàng)建成功的Oracle數(shù)據(jù)庫連接“o_link”,并寫下查詢SQL。再點(diǎn)擊預(yù)覽按鈕,即可查看配置的正確與否。如果對(duì)SQL語句不熟悉,請(qǐng)點(diǎn)擊“獲取SQL語句”按鈕,然后在彈出的“數(shù)據(jù)庫瀏覽器”窗口中選擇需要抽取的表。步驟二:配置HDFS文件輸出在Spoon窗體左側(cè)“核心對(duì)象”標(biāo)簽下的“BigData”類別下找到HadoopFileOutput,并將其拖拽至右側(cè)工作區(qū)域。然后按住鼠標(biāo)中間通過拖拽建立“表輸入”與“HadoopFileOutput”的連接。最后雙擊“HadoopFileOutput”,進(jìn)行編輯,編輯內(nèi)容可參考以下圖示:編輯完“文件”標(biāo)簽后,選擇“內(nèi)容”標(biāo)簽進(jìn)行編輯。然后點(diǎn)擊“字段”標(biāo)簽頁,點(diǎn)擊“獲取字段”按鈕。步驟三:啟動(dòng)ETL過程按下F9,在彈出窗口中按下“啟動(dòng)”按鈕。步驟四:查看結(jié)果hdfsdfs-cat/tmp/oracle_t1.txtHDFS格式的文件在目錄下看不到,是什么原因?通過Sqoop抽取數(shù)據(jù)至HDFS步驟一:使用SSH工具登錄集群的放有驅(qū)動(dòng)包的節(jié)點(diǎn)。切換登錄用戶為hdfs。su-hdfs步驟二:執(zhí)行Sqoop命令sqoopimport--connectjdbc:mysql://50:3306/jcd--usernameroot--password123456--tablejcd--target-dir'/tmp/aa'--fields-terminated-by'|'-m1執(zhí)行結(jié)果步驟三:查看執(zhí)行命令后HDFS上的數(shù)據(jù)hdfsdfs-cat/tmp/aa/part-m-00000HDFS格式的文件在目錄下看不到,是什么原因?通過Sqoop抽取數(shù)據(jù)至HIVE步驟一:使用SSH工具登錄集群的放有驅(qū)動(dòng)包的節(jié)點(diǎn)。切換登錄用戶為hdfs。步驟二:執(zhí)行Sqoop命令sqoopimport--connect"jdbc:mysql://50:3306/jcd?useUnicode=true&characterEncoding=utf-8"--usernameroot--password123456--tablejcd--hive-import--fields-terminated-by':'-m1--target-dir/temp執(zhí)行結(jié)果步驟三:查看執(zhí)行命令后Hive上的數(shù)據(jù)hiveselect*fromjcd;通過Sqoop抽取數(shù)據(jù)至HBase步驟一:使用SSH工具登錄集群的放有驅(qū)動(dòng)包的節(jié)點(diǎn)。切換登錄用戶為hdfs。步驟二:執(zhí)行Sqoop命令sqoopimport--connectjdbc:mysql://50:3306/jcd--usernameroot--password123456--tablejcd--hbase-create-table--hbase-tablejcd_test--column-familyinfo--hbase-row-keyid-m1執(zhí)行結(jié)果步驟三:查看執(zhí)行命令后HBase上的數(shù)據(jù)hbaseshellscan'sqoop_test'非結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入增量數(shù)據(jù)導(dǎo)入FAQMPP工具獲取方法在DataEngine界面選擇MPP,打開服務(wù)操作,點(diǎn)擊工具下載即可將MPP工具都下載到本地使用,包含了OratoMPP、dispatch、ODBC、JDBC、.net、C-API等接口工具以及MPP集群管理器。如何獲取SQL建表語句首先通過navicat連接到數(shù)據(jù)庫,Oracle連接方式參考《Oracle操作指導(dǎo)書》,鼠標(biāo)右鍵選擇表,選擇轉(zhuǎn)儲(chǔ)SQL文件,選擇僅結(jié)構(gòu),就可以將該表的建表語句導(dǎo)出成文本。然后將該文本打開,即可找到該表的建表語句如下:--TablestructureforCOURSE--DROPTABLE"ZZH"."COURSE";CREATETABLE"ZZH"."COURSE"("CNO"VARCHAR2(10BYTE)NOTNULL,"CNAME"VARCHAR2(20BYTE)NULL,"TNO"VARCHAR2(20BYTE)NOTNULL)根據(jù)MPP的SQL語法和字符類型,修改建表語句如下:CREATETABLECOURSE("CNO"VARCHAR(10)NOTNULL,"CNAME"VARCHAR(20)NULL,"TNO"VARCHAR(20)NOTNULL)最后將該建表語句輸入到kettle的表輸出的SQL中執(zhí)行即可在MPP中創(chuàng)建該表結(jié)構(gòu),也可以用navicat或者M(jìn)PP集群管理器連接MPP數(shù)據(jù)庫進(jìn)行表的創(chuàng)建。kettle遇到錯(cuò)誤就會(huì)中斷的解決方法添加一條錯(cuò)誤處理步驟給文本文件輸出入下圖配置文件名在內(nèi)容欄目可相應(yīng)去掉表頭,修改格式,分隔符字段的一些細(xì)節(jié)處理,如去掉左右空格,精度等等SQLServer數(shù)據(jù)導(dǎo)出UTF-8出錯(cuò)SQLServer不支持UTF-8格式的導(dǎo)出,應(yīng)對(duì)方法為轉(zhuǎn)出為gbk,(換行符設(shè)置為linux下?lián)Q行符LF),ftp或者移動(dòng)硬盤導(dǎo)入到linux下(SQLServer默認(rèn)肯在window機(jī)器下安裝)然后在linux下iconv-f"gbk"-t"utf-8"(原文件名稱)>(新文件名稱)換行符問題Window下?lián)Q行符為CRLFLinux下?lián)Q行符為LFMac下?lián)Q行符為CRMPP數(shù)據(jù)類型數(shù)值類型H3CDataEngineMPP支持?jǐn)?shù)據(jù)類型包括嚴(yán)格的數(shù)值數(shù)據(jù)類型(TINYINT,SMALLINT,INT,BIGINT,DECIMAL),以及近似的數(shù)值數(shù)據(jù)類型(FLOAT,DOUBLE)。為了更有效地使用存儲(chǔ)空間,請(qǐng)用戶盡量使用最精確的類型。例如,如果一個(gè)整數(shù)列被用于在1~127之間的值,TINYINT是最好的類型。為了存儲(chǔ)更大范圍的數(shù)值,用戶可以選擇BIGINT或DECIMAL類型。作為SQL92標(biāo)準(zhǔn)的擴(kuò)展,H3CDataEngineMPP也支持整數(shù)類型TINYINT,SMALLINT和BIGINT。H3CDataEngineMPP支持的數(shù)值類型,如下表所示:類型名稱最小值最大值占用字節(jié)數(shù)TINYINT-1271271SMALLINT-32767327672INT(INTEGER)-214748364721474836474BIGINT-922337203685477580692233720368547758068FLOAT-3.40E+383.40E+384DOUBLE-1.7976931348623157E+3081.7976931348623157E+3088DECIMAL[(M[,D])]-(1E+M-1)/(1E+D)(1E+M-1)/(1E+D)動(dòng)態(tài)計(jì)算TINYINT整數(shù)類型,它的范圍是-127到127,TINYINT占用1個(gè)字節(jié)。SMALLINT整數(shù)類型。它的范圍是-32767到32767,SMALLINT占用2個(gè)字節(jié)。INT整數(shù)類型。INTEGER的同義詞。它的范圍是-2147483647到2147483647,INT占用4個(gè)字節(jié)。BIGINT整數(shù)類型。它的范圍是-9223372036854775806到9223372036854775806,BIGINT占用8個(gè)字節(jié)。FLOATFLOAT代表一個(gè)浮點(diǎn)型數(shù)值,占用4個(gè)字節(jié),它所存儲(chǔ)的數(shù)值不是一個(gè)準(zhǔn)確值。允許的值是-3.402823466E+38到-1.175494351E-38,0,1.175494351E-38到3.402823466E+38。這些是理論限制,基于IEEE標(biāo)準(zhǔn)。實(shí)際的范圍根據(jù)硬件或操作系統(tǒng)的不同可能稍微小些。H3CDataEngineMPP允許在關(guān)鍵字FLOAT后面的括號(hào)內(nèi)選擇用位指定精度,即FLOAT(X)。0到23的精度對(duì)應(yīng)FLOAT列的4字節(jié)單精度,24到53的精度對(duì)應(yīng)DOUBLE列的8字節(jié)雙精度。當(dāng)24<=X<=53時(shí),F(xiàn)LOAT(X)與DOUBLE(X)等價(jià)。同時(shí)H3CDataEngineMPP允許使用非標(biāo)準(zhǔn)語法FLOAT(M,D)(M是整數(shù)位數(shù)和小數(shù)位數(shù)的總位數(shù),D是小數(shù)的個(gè)數(shù)),H3CDataEngineMPP保存值時(shí)進(jìn)行四舍五入。DOUBLEDOUBLE代表一個(gè)浮點(diǎn)型數(shù)值,占用8個(gè)字節(jié),它所存儲(chǔ)的數(shù)值不是一個(gè)準(zhǔn)確值。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0、2.2250738
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級(jí)物理第4章第4節(jié):光的折射
- 太陽能發(fā)電站智能維護(hù)技術(shù)考核試卷
- 有機(jī)肥料在農(nóng)業(yè)可持續(xù)發(fā)展中的作用考核試卷
- 意外傷害保險(xiǎn)與應(yīng)急救援體系的融合考核試卷
- 學(xué)術(shù)人才引進(jìn)與培養(yǎng)考核試卷
- 醫(yī)療設(shè)備在精準(zhǔn)醫(yī)療領(lǐng)域的創(chuàng)新應(yīng)用與挑戰(zhàn)解決策略考核試卷
- 醫(yī)療器械在跨學(xué)科協(xié)作中的價(jià)值考核試卷
- 文具行業(yè)品牌年輕化考核試卷
- 動(dòng)物藥品零售企業(yè)財(cái)務(wù)管理考核試卷
- 收購農(nóng)村車庫合同范本
- 汽車坡道腳手架施工方案
- 2021中國靜脈血栓栓塞癥防治抗凝藥物的選用與藥學(xué)監(jiān)護(hù)指南(2021)解讀
- 部編版六年級(jí)下冊(cè)道德與法治全冊(cè)教案教學(xué)設(shè)計(jì)
- 民兵知識(shí)小常識(shí)
- 圖形的平移與旋轉(zhuǎn)壓軸題(7個(gè)類型55題)-【???jí)狠S題】2023-2024學(xué)年八年級(jí)數(shù)學(xué)下冊(cè)壓軸題攻略(解析版)
- TDALN 033-2024 學(xué)生飲用奶安全規(guī)范入校管理標(biāo)準(zhǔn)
- 2024至2030年全球及中國標(biāo)準(zhǔn)履帶挖掘機(jī)行業(yè)研究及十四五規(guī)劃分析報(bào)告
- 各地分布式光伏項(xiàng)目電價(jià)對(duì)比
- 2024年綠化工職業(yè)技能理論知識(shí)考試題庫(含答案)
- 醫(yī)學(xué)檢驗(yàn)技術(shù)專業(yè)《血液學(xué)檢驗(yàn)》課程標(biāo)準(zhǔn)
- 2024年江蘇食品藥品職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試題庫有完整答案
評(píng)論
0/150
提交評(píng)論