摘要:用例測(cè)試表繼續(xù)用上述的創(chuàng)建測(cè)試文件,內(nèi)容如下創(chuàng)建文件,內(nèi)容如下根據(jù)文件加載數(shù)據(jù)檢查數(shù)據(jù)是否轉(zhuǎn)換成功初試主要是針對(duì)大數(shù)據(jù)量的且一般是批量裝載的方式。
Trafodion 的數(shù)據(jù)加載主要包括兩種方法,即 Trickle Load(持續(xù)加載) 和 Bulk Load(批量加載)。
下表介紹了兩種加載方法的區(qū)別:
類型 | 描述 | 方法/工具 |
---|---|---|
Trickle Load | 數(shù)據(jù)量較小,立即插入 | ODB 工具(性能通常較第三方ETL工具更好); ETL 工具如kettle、Informatica等; 自主開發(fā)的ODBC/JDBC應(yīng)用。 |
Bulk Load | 數(shù)據(jù)量較大;階段性數(shù)據(jù)并且是批量加載的方式 | Bulk Loader |
從SQL插入語(yǔ)句實(shí)現(xiàn)方式來看,
Trickle Load 又包括以下三種方式:
INSERT
UPSERT
UPSERT USING LOAD
而Bulk Load主要的SQL命令為: LOAD
以上4種SQL實(shí)現(xiàn)加載方式區(qū)別如下表:
特征 | INSERT | UPSERT | UPSERT USING LOAD | LOAD |
---|---|---|---|---|
事務(wù) | 是 | 是 | 不是,使用HBase的WAL來恢復(fù) | 不是,使用快照(SNAPSHOT)來恢復(fù) |
操作方法 | 通過CheckAndPut調(diào)用走標(biāo)準(zhǔn)HBase寫路徑 | 通過Put調(diào)用走標(biāo)準(zhǔn)HBase寫路徑 | 通過Put調(diào)用走標(biāo)準(zhǔn)HBase寫路徑 | 使用HBase bulk load寫路徑并直接創(chuàng)建HFiles |
唯一性約束 | 強(qiáng)制 | 不強(qiáng)制,有相同鍵值的覆蓋之前的行 | 不強(qiáng)制,有相同鍵值的覆蓋之前的行 | 部分強(qiáng)制 |
索引 | 可以用在有索引的表上 | 可以用在有索引的表上 | 當(dāng)用在有索引的表上時(shí),會(huì)回到UPSERT | 可以用在有索引的表,索引會(huì)不起作用 |
最大Size | 10k*n 行,n代表節(jié)點(diǎn)數(shù) | 10k*n 行,n代表節(jié)點(diǎn)數(shù) | 5million*n 行,n代表節(jié)點(diǎn)數(shù) | 2 billion*n行,n代表節(jié)點(diǎn)數(shù) |
最小Size | 1行 | 1行 | 1行 | 1million*n行 |
速度 | 最慢 | 比INSERT快 | 比UPSERT快 | 最快 |
(注:以下只是初步介紹Trafodion odb工具的幾個(gè)主要命令的基本用法,更多用法及適用場(chǎng)景請(qǐng)見下載官方文檔點(diǎn)擊打開鏈接查看詳情)
LOAD語(yǔ)法
用例
(1)創(chuàng)建測(cè)試表
(2)創(chuàng)建測(cè)試文件并編輯數(shù)據(jù)
(3)Load文件到測(cè)試表
(4)檢查L(zhǎng)oad是否成功
EXTRACT語(yǔ)法
用例
(1)繼續(xù)使用上述測(cè)試表,當(dāng)前測(cè)試表已經(jīng)加載了5條數(shù)據(jù)。
(2)Extract上表數(shù)據(jù)到指定文件
[centos@cent-1 bin]$ ./odb64luo -u trafodion -p traf123 -d traf -l src=test.file:tgt=trafodion.seabase.test_tbl > :fs=,:rows=5:loadcmd=IN:truncate:parallel=2 odb [main(1354)] - Unknow option :fs=,:rows=5:loadcmd=IN:truncate:parallel=2. Ignored odb [2016-09-26 09:15:51]: starting ODBC connection(s)... (1) 1 2 Connected to Trafodion [0.0.0]--- 0 row(s) deleted in 0.687s (prep 0.006s, exec 0.681s, fetch 0.000s/0.000s) [0] 5 records inserted [commit] [0] odb version 1.1.0 Load(2) statistics: [0] Target table: TRAFODION.SEABASE.TEST_TBL [0] Source: test.file [0] Pre-loading time: 0.327 s (00:00:00.327) [0] Loading time: 0.146 s(00:00:00.146) [0] Total records read: 5 [0] Total records inserted: 5 [0] Total number of columns: 2 [0] Total bytes read: 31 [0] Average input row size: 6.2 B [0] ODBC row size: 21 B (data) + 16 B (len ind) [0] Rowset size: 100 [0] Rowset buffer size: 3.61 KiB [0] Load throughput (real data): 0.207 KiB/s [0] Load throughput (ODBC): 0.702 KiB/s odb [2016-09-26 09:15:51]: exiting. Session Elapsed time 0.479 seconds (00:00:00.479)
(3)查詢文件內(nèi)容
COPY語(yǔ)法
用例
(1)創(chuàng)建一個(gè)表和原測(cè)試結(jié)構(gòu)一致
(2)利用COPY命令把原測(cè)試表數(shù)據(jù)復(fù)制到新表
[centos@cent-1 bin]$ ./odb64luo -u trafodion:trafodion -p traf123:traf123 -d traf:traf -cp src=trafodion.seabase.test_tbl:tgt=trafodion.seabase.test_tbl2:rows=m2:truncate Connected to Trafodion odb [2016-09-26 09:51:51]: starting ODBC connection(s)... 0 >1 >2 Connected to Trafodion [1.0.0]--- 0 row(s) deleted in 0.298s (prep 0.285s, exec 0.013s, fetch 0.000s/0.000s) [1] 5 records copied [commit] [0] odb version 1.1.0 Copy statistics: [0] Source: TRAFODION.SEABASE.TEST_TBL [0] Target: trafodion.seabase.test_tbl2 [0] Total number of columns: 2 [0] ODBC row size: 23 B (data) + 16 B (len ind) [0] Rowset size: 53,773 [0] Rowset buffer size: 2,048.00 KiB [0] Pre-copy time: 0.677 s (00:00:00.677) [0] Copy time: 0.037 s (00:00:00.037) [0] Total records copied: 5 (0.135 krec/s) [0] Copy throughput (ODBC): 0.003 MiB/s (0.010 GiB/h) [0] Total/Wait cycles: 1/0 [0>1] 5 records copied in 0.037 (00:00:00.037 s) [0>2] 0 records copied in 0.037 (00:00:00.037 s) odb [2016-09-26 09:51:52]: exiting. Session Elapsed time 0.733 seconds (00:00:00.733)
(3)檢查數(shù)據(jù)是否復(fù)制成功
TRANSFORM語(yǔ)法
Transform是Load的一種,Transform的意思是在Load的時(shí)候通過一個(gè)mapfile來實(shí)現(xiàn)一些功能,比如忽略輸入文件的某些行、生產(chǎn)序列號(hào)、插入常量、日期格式轉(zhuǎn)換、字符串截取和替換、生成隨機(jī)數(shù)等等。
用例
(1)測(cè)試表繼續(xù)用上述的test_tbl
(2)創(chuàng)建測(cè)試Input文件,內(nèi)容如下:
(3)創(chuàng)建map文件,內(nèi)容如下:
(4)根據(jù)map文件加載數(shù)據(jù)
[centos@cent-1 bin]$ ./odb64luo -u trafion -p traf123 -d traf -l src=test_transform.file:tgt=trafodion.seabase.test_tbl:map=m.map:fs=,:truncate odb [2016-09-26 10:28:49]: starting ODBC connection(s)... 0 Connected to Trafodion [0.0.0]--- 5 row(s) deleted in 0.042s (prep 0.001s, exec 0.041s, fetch 0.000s/0.000s) [0] 5 records inserted [commit] [0] odb version 1.1.0 Load statistics: [0] Target table: TRAFODION.SEABASE.TEST_TBL [0] Source: test_transform.file [0] Pre-loading time: 0.165 s (00:00:00.165) [0] Loading time: 0.023 s(00:00:00.023) [0] Total records read: 5 [0] Total records inserted: 5 [0] Total number of columns: 2 [0] Total bytes read: 75 [0] Average input row size: 15.0 B [0] ODBC row size: 21 B (data) + 16 B (len ind) [0] Rowset size: 100 [0] Rowset buffer size: 3.61 KiB [0] Load throughput (real data): 3.184 KiB/s [0] Load throughput (ODBC): 4.458 KiB/s odb [2016-09-26 10:28:49]: exiting. Session Elapsed time 0.195 seconds (00:00:00.195)
(5)檢查數(shù)據(jù)是否轉(zhuǎn)換成功
Trafodion Bulk Load 初試Bulk Load主要是針對(duì)大數(shù)據(jù)量的且一般是批量裝載的方式。Bulk Load通常使用LOAD語(yǔ)句實(shí)現(xiàn)。
下面介紹幾種Bulk Load方式,
從Trafodion表加載數(shù)據(jù)
從HDFS文件加載數(shù)據(jù)(Hive外部表)
從Hive表加載數(shù)據(jù)
從外部數(shù)據(jù)庫(kù)加載數(shù)據(jù)(Mysql to Hive)
從Trafodion表加載數(shù)據(jù)(1)創(chuàng)建兩個(gè)表結(jié)構(gòu)相同的測(cè)試表
(2)表1有幾條數(shù)據(jù),表2沒有數(shù)據(jù)
(3)從表1加載數(shù)據(jù)到表2
從HDFS文件加載數(shù)據(jù)(Hive 外部表)(1)創(chuàng)建測(cè)試文件并利用scp或者其他方式上傳到Hadoop Cluster上,內(nèi)容如下
(2)將測(cè)試文件導(dǎo)入HDFS中
(3)在Trafodion中創(chuàng)建測(cè)試表
(4)在Hive中創(chuàng)建Hive外部表,指向前面對(duì)應(yīng)的HDFS文件
[hdfs@cent-1 ~]$ hive Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.4.8-1.cdh5.4.8.p0.4/jars/hive-common-1.1.0-cdh5.4.8.jar!/hive-log4j.properties WARNING: Hive CLI is deprecated and migration to Beeline is recommended. hive> create external table test_tbl (name string,age int,sex string) row format delimited fields terminated by "," location "/hive/test/test_tbl"; OK Time taken: 0.085 seconds hive> show tables; OK test_tbl Time taken: 0.364 seconds, Fetched: 1 row(s)
(5)加載數(shù)據(jù)到Trafodion表
從Hive表加載數(shù)據(jù)(1)在Hive中創(chuàng)建測(cè)試表并插入幾條數(shù)據(jù)
(2)Trafodion中的表繼續(xù)沿用上述測(cè)試表,先清空數(shù)據(jù)
(3)從Hive加載數(shù)據(jù)到Trafodion
(注:在做從hive到trafodion數(shù)據(jù)加載的時(shí)候有幾個(gè)參數(shù)可以配置,用來提升加載性能,如HIVE_MAX_STRING_LENGTH、ALLOW_INCOMPATIBLE_ASSIGNMENT
典型的用法如下:
CQD HIVE_MAX_STRING_LENGTH "1000"; --用于當(dāng)列的最大長(zhǎng)度為1KB時(shí) CQD ALLOW_INCOMPATIBLE_ASSIGNMENT "ON"; --用于當(dāng)有時(shí)間相關(guān)的列的時(shí)候從外部數(shù)據(jù)庫(kù)加載數(shù)據(jù)(Mysql to Hive)
(1)在集群上安裝并啟動(dòng)Sqoop,Sqoop安裝步驟請(qǐng)參照其官方文檔點(diǎn)擊打開鏈接
(2)下載mysql connector Jar包,并放到/var/lib/sqoop目錄下
(3)在某臺(tái)機(jī)器上安裝Mysql,安裝Mysql步驟此處不作詳細(xì)說明
(4)在mysql數(shù)據(jù)中創(chuàng)建測(cè)試表,并插入幾條數(shù)據(jù)
(5)使用sqoop命令從mysql往hive導(dǎo)入數(shù)據(jù)
[hdfs@cent-2 ~]$ sqoop import --connect jdbc:mysql://localhost:3306/test --driver com.mysql.jdbc.Driver --username centos --table test_tbl --split-by name --hive-import --create-hive-table --hive-table test_tabl_hive Warning: /opt/cloudera/parcels/CDH-5.4.8-1.cdh5.4.8.p0.4/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail. ... Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.4.8-1.cdh5.4.8.p0.4/jars/hive-common-1.1.0-cdh5.4.8.jar!/hive-log4j.properties OK Time taken: 3.052 seconds Loading data to table default.test_tabl_hive Table default.test_tabl_hive stats: [numFiles=4, totalSize=27] OK Time taken: 0.748 seconds
(6)從Trafodion或Hive Shell中查看數(shù)據(jù)是否導(dǎo)入成功
作者:Post_yuan,易鯨捷資深交付工程師。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/17800.html
摘要:表與表如何映射我們已經(jīng)知道中的表其實(shí)是映射和存儲(chǔ)在表中的,本文通過一個(gè)簡(jiǎn)單介紹一下中創(chuàng)建的表是如何映射到表。下面通過一個(gè)例子簡(jiǎn)單介紹如何通過來訪問原生的表。 Trafodion表與HBase表如何映射 我們已經(jīng)知道Trafodion中的表其實(shí)是映射和存儲(chǔ)在HBase表中的, 本文通過一個(gè)簡(jiǎn)單DEMO介紹一下Trafodion中創(chuàng)建的表是如何映射到HBase表。 1.創(chuàng)建Trafodio...
摘要:而支持事務(wù)處理,尤其是分布式情況下的事務(wù)和數(shù)據(jù)一致性是很復(fù)雜的事情。 Trafodion是Apache基金會(huì)的一個(gè)開源項(xiàng)目,提供了一個(gè)成熟的企業(yè)級(jí)SQL-on-HBase解決方案。Trafodion的主要設(shè)計(jì)思想是處理operational類型的工作負(fù)載,或者是傳統(tǒng)的OLTP應(yīng)用。此外,對(duì)于需要保證數(shù)據(jù)一致性、需要標(biāo)準(zhǔn)SQL開發(fā)接口,或者需要實(shí)時(shí)數(shù)據(jù)讀寫分析的應(yīng)用,Trafodion也...
閱讀 3092·2023-04-25 20:43
閱讀 1726·2021-09-30 09:54
閱讀 1598·2021-09-24 09:47
閱讀 2882·2021-09-06 15:02
閱讀 3520·2021-02-22 17:09
閱讀 1242·2019-08-30 15:53
閱讀 1447·2019-08-29 17:04
閱讀 1967·2019-08-28 18:22