亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

sqlserver數(shù)據(jù)導(dǎo)入hdfs和hive的解決方案

系統(tǒng) 2110 0

方法一:

?

環(huán)境: win7+sqlserver2008

工具: bcp

測試效率:

新聞數(shù)據(jù)庫, 10?000?000 行, 25.8G

導(dǎo)出時間:約 2 個小時

每秒約 1326

?

?

方法二:

?

用循環(huán)執(zhí)行sql語句,分段寫入文件。

?

?

?


?

?

?

1?Bcp 介紹

bcp? 實(shí)用工具可以在? Microsoft?SQL?Server? 實(shí)例和用戶指定格式的數(shù)據(jù)文件間大容量復(fù)制數(shù)據(jù)。?使用? bcp? 實(shí)用工具可以將大量新行導(dǎo)入? SQL?Server? 表,或?qū)⒈頂?shù)據(jù)導(dǎo)出到數(shù)據(jù)文件。?除非與? queryout? 選項(xiàng)一起使用,否則使用該實(shí)用工具不需要了解? Transact-SQL? 知識。?若要將數(shù)據(jù)導(dǎo)入表中,必須使用為該表創(chuàng)建的格式文件,或者必須了解表的結(jié)構(gòu)以及對于該表中的列有效的數(shù)據(jù)類型。 ?

(1)? 導(dǎo)入。

這個動作使用 in 命令完成,后面跟需要導(dǎo)入的文件名。?

(2)? 導(dǎo)出。

這個動作使用 out 命令完成,后面跟需要導(dǎo)出的文件名。?

(3)? 使用 SQL 語句導(dǎo)出。

這個動作使用 queryout 命令完成,它跟 out 類似,只是數(shù)據(jù)源不是表或視圖名,而是 SQL 語句。?

(4)? 導(dǎo)出格式文件。

這個動作使用 format 命令完成,后而跟格式文件名。?

下面介紹一些常用的選項(xiàng):?

-f?format_file?

format_file 表示格式文件名。這個選項(xiàng)依賴于上述的動作,如果使用的是 in out format_file 表示已經(jīng)存在的格式文件,如果使用的是 format 則表示是要生成的格式文件。?

-x?

這個選項(xiàng)要和 -f?format_file 配合使用,以便生成 xml 格式的格式文件。

-F?first_row?

指定從被導(dǎo)出表的哪一行導(dǎo)出,或從被導(dǎo)入文件的哪一行導(dǎo)入。?

-L?last_row?

指定被導(dǎo)出表要導(dǎo)到哪一行結(jié)束,或從被導(dǎo)入文件導(dǎo)數(shù)據(jù)時,導(dǎo)到哪一行結(jié)束。?

-c?

使用 char 類型做為存儲類型,沒有前綴且以 "\t" 做為字段分割符,以 "\n" 做為行分割符。?

-w?

-c 類似,只是當(dāng)使用 Unicode 字符集拷貝數(shù)據(jù)時使用,且以 nchar 做為存儲類型。?

-t?field_term?

指定字符分割符,默認(rèn)是 "\t" 。?

-r?row_term?

指定行分割符,默認(rèn)是 "\n" 。?

-S?server_name[?\instance_name]?

指定要連接的 SQL?Server 服務(wù)器的實(shí)例,如果未指定此選項(xiàng), bcp 連接本機(jī)的 SQL?Server 默認(rèn)實(shí)例。如果要連接某臺機(jī)器上的默認(rèn)實(shí)例,只需要指定機(jī)器名即可。?

-U?login_id?

指定連接 SQL?Sever 的用戶名。?

-P?password?

指定連接 SQL?Server 的用戶名密碼。?

-T?

指定 bcp 使用信任連接登錄 SQL?Server 。如果未指定 -T ,必須指定 -U -P 。?

-k?

指定空列使用 null 值插入,而不是這列的默認(rèn)值。?

2? 部署與流程

3? 詳細(xì)設(shè)計(jì)

3.1?Sqlserver 數(shù)據(jù)導(dǎo)出到臨時文本階段

Log

BcpSqlserver

JdbcStream

SqlserverToTxt

(代碼見 SVN-SqlserverToHive

此階段的是根據(jù)自定義每個導(dǎo)出文件中的數(shù)據(jù)行數(shù)進(jìn)行分文件導(dǎo)出,一個導(dǎo)出成果如下:

導(dǎo)出效率分析:

測試一個文件 1000,10000,100000 條數(shù)據(jù),比較完成時間:

文件數(shù)據(jù)行數(shù)? =?1000?start:1359102390172?end:1359102452310?time?use?:62138ms

文件數(shù)據(jù)行數(shù)? =?10000?start:1359102452310?end:1359102461626?time?use?:9316ms

文件數(shù)據(jù)行數(shù)? =?100000?start:1359102461626?end:1359102462997?time?use?:1371ms

文件數(shù)據(jù)行數(shù)? =?1000000?start:1359102577696?end:1359102578501?time?use?:805ms

所以,用 bcp 導(dǎo)數(shù)據(jù),文件越少效率越高,這是 bcp 內(nèi)部的 sql 優(yōu)化導(dǎo)致的。但是,考慮到實(shí)際需要,如果需對一個文件有控制,則可以自己設(shè)定文件大小。

?

3.2? 臨時文本導(dǎo)入到 hive/hdfs 階段

3.2.1? 導(dǎo)入 hive

創(chuàng)建符合行列規(guī)則的 hive

CREATE?TABLE?table1?(a?STRING,?b?STRING)
ROW?FORMAT?DELIMITED?FIELDS?TERMINATED?BY?'\t'?ESCAPED?BY?'\\'
STORED?AS?TEXTFILE; ?

?

Jdbc 連接 hive ,執(zhí)行 load 語句

LOAD?DATA?LOCAL?INPATH?'/home/admin/test/test.txt'?OVERWRITE?INTO?TABLE?test_1?

?

或者直接創(chuàng)建外表指向hdfs中的數(shù)據(jù)文件

?

create external table IF NOT EXISTS mytest (ID string,Symbol string)?LOCATION '/tmp/sqltohdfs

?

?

?

3.2.2? 導(dǎo)入 hdfs

多線程每個線程處理一個文件導(dǎo)入到 hdfs

參考代碼

import ?java.io.IOException;

import ?java.net.URI;

import ?java.io.FileInputStream;???

??

import ?org.apache.hadoop.conf.Configuration;??

import ?org.apache.hadoop.fs.FileSystem;??

import ?org.apache.hadoop.fs.FSDataOutputStream;??

import ?org.apache.hadoop.fs.Path;??

import ?org.apache.hadoop.io.IOUtils;

?

?

public ? class ?LocalToHDFS?{

//?s?為本地文件路徑

//?d?為 hdfs 絕對路徑

public ? static ? void ? uploadLocalFile2HDFS (String?s,?String?d)

throws ?IOException?{

Configuration?conf?=? new ?Configuration();

FileSystem?hdfs?=?FileSystem. get (URI. create (d),?conf);

FileInputStream?in?=? null ;

FSDataOutputStream?out?=? null ;

try ?{

in?=? new ?FileInputStream(s);

out?=?hdfs.create( new ?Path(d));

IOUtils. copyBytes (in,?out,?4096,? false );

}? finally ?{

IOUtils. closeStream (in);

IOUtils. closeStream (out);

}

?

}

}

?


sqlserver數(shù)據(jù)導(dǎo)入hdfs和hive的解決方案


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 九草在线免费观看 | 日本在线一级 | 天天做天天爱夜夜爽女人爽宅 | 香蕉成人网 | 久久乱码精品区中文字幕 | 国产真实偷乱视频在线观看 | 精品视频在线免费看 | 国产在线五月综合婷婷 | 精品乱久久 | 欧美亚洲高清日韩成人 | 国产日产欧产精品网站 | 久草久| 亚洲国产综合精品中文第一区 | 看福利影院| 伊人色综合久久天天网 | 久久九九99热这里只有精品 | 久久精品国产精品国产精品污 | 99久9在线视频 | 国产精品视频视频久久 | 久久久久夜色精品波多野结衣 | 一本久道久综合久久鬼色 | 久久国产欧美日韩精品免费 | 豆国产97在线 | 中国 | 毛片4| 伊人久久综合影院首页 | 国产女人水多毛片18 | 国自产拍在线天天更新91 | xxx大片免费视频 | 久久婷婷一区二区三区 | 黄色在线免费观看 | 国产欧美精品一区二区三区-老狼 | 久一视频在线 | 欧美日韩中文字幕 | 欧美成人中文字幕dvd | 久久婷婷国产综合精品 | 久久天天躁狠狠躁夜夜爽蜜月 | 在线成人天天鲁夜啪视频 | 色视频在线免费观看 | 国产精品青草久久久久婷婷 | 久久99免费视频 | 亚洲精品人成网线在线 |