先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動(dòng)等大廠,目前阿里P7
深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年最新大數(shù)據(jù)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,涵蓋了95%以上大數(shù)據(jù)知識(shí)點(diǎn),真正體系化!
由于文件比較多,這里只是將部分目錄截圖出來,全套包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、大綱路線、講解視頻,并且后續(xù)會(huì)持續(xù)更新
如果你需要這些資料,可以添加V獲?。簐ip204888 (備注大數(shù)據(jù))
正文
- ES索引結(jié)構(gòu)
- MySQL表結(jié)構(gòu)
mysql原始數(shù)據(jù)
恭喜你??????,到這你已經(jīng)成功2/4啦,接下來我們要去配置Logstash啦,加油??
三. 配置Logstash
- 進(jìn)入到 /logstash-7.10.2/bin目錄下,創(chuàng)建 testlogstash.conf 文件,這是具體的配置
input {
stdin {}
jdbc {
#===================這是你需要修改的第1個(gè)地方===============#
#數(shù)據(jù)庫連接地址
jdbc\_connection\_string => "jdbc:mysql://localhost:3306/user\_center?characterEncoding=UTF-8&autoReconnect=true"
jdbc\_user => "root"
jdbc\_password => "root"
# MySQL依賴包路徑;
jdbc\_driver\_library => "/Users/chencunyou/Desktop/java/mysql/mysql-connector-java-8.0.27.jar"
#查詢數(shù)據(jù)庫語句(查詢出的字段名要和es索引的字段名相同)
statement => "SELECT id,nick_name AS nickName,sex,birth_date AS birthDate,create_time AS createTime,update_time AS updateTime
FROM sys_user"
# 需要記錄的字段,用于增量同步,需是數(shù)據(jù)庫字段
tracking\_column => "updateTime"
# record_last_run上次數(shù)據(jù)存放位置;
last\_run\_metadata\_path => "/Users/chencunyou/Desktop/java/logstash-8.9.2/data/last\_time.txt"
#====================第1個(gè)地方修改結(jié)束=====================#
type => "jdbc"
# the name of the driver class for mysql
jdbc\_driver\_class => "com.mysql.cj.jdbc.Driver"
# 數(shù)據(jù)庫重連嘗試次數(shù)
connection\_retry\_attempts => "3"
# 判斷數(shù)據(jù)庫連接是否可用,默認(rèn)false不開啟
jdbc\_validate\_connection => "true"
# 數(shù)據(jù)庫連接可用校驗(yàn)超時(shí)時(shí)間,默認(rèn)3600S
jdbc\_validation\_timeout => "3600"
# 開啟分頁查詢(默認(rèn)false不開啟);
jdbc\_paging\_enabled => "true"
# 單次分頁查詢條數(shù)(默認(rèn)100000,若字段較多且更新頻率較高,建議調(diào)低此值);
jdbc\_page\_size => "500"
# statement為查詢數(shù)據(jù)sql,如果sql較復(fù)雜,建議配通過statement_filepath配置sql文件的存放路徑;
# sql_last_value為內(nèi)置的變量,存放上次查詢結(jié)果中最后一條數(shù)據(jù)tracking_column的值,此處即為ModifyTime;
# statement\_filepath => "mysql/jdbc.sql"
# 是否將字段名轉(zhuǎn)換為小寫,默認(rèn)true(如果有數(shù)據(jù)序列化、反序列化需求,建議改為false);
lowercase\_column\_names => false
# Value can be any of: fatal,error,warn,info,debug,默認(rèn)info;
sql\_log\_level => warn
#
# 是否記錄上次執(zhí)行結(jié)果,true表示會(huì)將上次執(zhí)行結(jié)果的tracking_column字段的值保存到last_run_metadata_path指定的文件中;
record\_last\_run => true
# 需要記錄查詢結(jié)果某字段的值時(shí),此字段為true,否則默認(rèn)tracking_column為timestamp的值;
use\_column\_value => true
# Value can be any of: numeric,timestamp,Default value is "numeric"
tracking\_column\_type => timestamp
# 是否清除last_run_metadata_path的記錄,需要增量同步時(shí)此字段必須為false;
clean\_run => false
#
# 同步頻率(分 時(shí) 天 月 年),默認(rèn)每分鐘同步一次;
schedule => "\* \* \* \* \*"
}
}
output {
elasticsearch {
#===================這是你需要修改的第2個(gè)地方===============#
# host => "localhost"
# port => "9200"
# 配置ES集群地址
hosts => ["127.0.0.1:9200"]
user => "admin"
password => "admin"
# 啟用SSL/TLS加密(前提是開啟了HTTPS訪問)
ssl => true
# 禁用證書驗(yàn)證(前提是開啟了HTTPS訪問)
ssl\_certificate\_verification => false
# 證書地址(如果啟用SSL/TLS加密的話,即使禁用證書驗(yàn)證,也需要配置否則會(huì)報(bào)錯(cuò))
#cacert => "/Users/chencunyou/Desktop/java/logstash-7.10.2/CloudSearchService.cer"
# 你的索引名字,必須小寫
index => "sys\_user\_dev"
# 數(shù)據(jù)唯一索引(建議使用數(shù)據(jù)庫表唯一索引id)
document\_id => "%{id}"
#====================第2個(gè)地方修改結(jié)束=====================#
}
stdout {
codec => json_lines
}
}
- SSL證書下載
如果你是買的云服務(wù)器廠商的ES服務(wù),去實(shí)例基本信息下載即可。我們公司用的華為云,我以華為云為例,進(jìn)到"云搜索服務(wù)CSS",找到ES實(shí)例,然后下載證書
恭喜你??????,到這你已經(jīng)成功3/4啦,接下來進(jìn)入到最重要,同時(shí)99%會(huì)報(bào)錯(cuò)的最后一步,加油??
四. 同步數(shù)據(jù)
- 進(jìn)入到 bin 目錄
- 執(zhí)行腳本同步數(shù)據(jù)
./logstash -f testlogstash.conf
- 執(zhí)行結(jié)果(??恭喜你,同步失敗,當(dāng)然幸運(yùn)的你也可能不會(huì)碰到此問題)
Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:\_id=>"369539918421758535", :\_index=>"sys\_user\_dev", :routing=>nil, :\_type=>"\_doc"}, #<LogStash::Event:0x41528007>], :response=>{"index"=>{"\_index"=>"sys\_user\_dev", "\_type"=>"\_doc", "\_id"=>"369539918421758535", "status"=>400, "error"=>{"type"=>"mapper\_parsing\_exception", "reason"=>"failed to parse field [sex] of type [integer] in document with id '369539918421758535'. Preview of field's value: 'false'", "caused\_by"=>{"type"=>"json\_parse\_exception", "reason"=>"Current token (VALUE\_FALSE) not numeric, can not use numeric value accessors\n at [Source: (byte[])\"{\"type\":\"jdbc\",\"createTime\":\"2023-09-15 20:22:47\",\"id\":369539918421758535,\"nickName\":\"易烊千璽\",\"@timestamp\":\"2023-09-15T14:23:01.583Z\",\"updateTime\":\"2023-09-15 20:23:03\",\"@version\":\"1\",\"sex\":false,\"birthDate\":\"2000-09-15\"}\"; line: 1, column: 202]"}}}}}
??原因:數(shù)據(jù)庫表中的sex字段,字段類型為tinyint,Logstash會(huì)轉(zhuǎn)成boolean,但是ES中設(shè)置的也是int類型,所以你懂的
解決方案: 修改 testlogstash.conf 文件中的mysql連接地址,指定 tinyInt1isBit=false
jdbc\_connection\_string => "jdbc:mysql://localhost:3306/user\_center?characterEncoding=UTF-8&autoReconnect=true&tinyInt1isBit=false"
- 再次執(zhí)行命令(發(fā)現(xiàn)還是報(bào)錯(cuò)??,當(dāng)然幸運(yùn)的你也可能不會(huì)碰到此問題)
Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:\_id=>"369539918421758535", :\_index=>"sys\_user\_dev", :routing=>nil, :\_type=>"\_doc"}, #<LogStash::Event:0x4f58d64c>], :response=>{"index"=>{"\_index"=>"sys\_user\_dev", "\_type"=>"\_doc", "\_id"=>"369539918421758535", "status"=>400, "error"=>{"type"=>"mapper\_parsing\_exception", "reason"=>"failed to parse field [birthDate] of type [date] in document with id '369539918421758535'. Preview of field's value: '2000-09-14T16:00:00.000Z'", "caused\_by"=>{"type"=>"illegal\_argument\_exception", "reason"=>"failed to parse date field [2000-09-14T16:00:00.000Z] with format [yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch\_millis]", "caused\_by"=>{"type"=>"date\_time\_parse\_exception", "reason"=>"Failed to parse with all enclosed parsers"}}}}}}
網(wǎng)上學(xué)習(xí)資料一大堆,但如果學(xué)到的知識(shí)不成體系,遇到問題時(shí)只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。
需要這份系統(tǒng)化的資料的朋友,可以添加V獲?。簐ip204888 (備注大數(shù)據(jù))
一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對(duì)IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場(chǎng)吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!文章來源地址http://www.zghlxwxcb.cn/news/detail-860504.html
,遇到問題時(shí)只是淺嘗輒止,不再深入研究,那么很難做到真正的技術(shù)提升。**
需要這份系統(tǒng)化的資料的朋友,可以添加V獲取:vip204888 (備注大數(shù)據(jù))
[外鏈圖片轉(zhuǎn)存中…(img-QLCFUi1e-1713173968809)]文章來源:http://www.zghlxwxcb.cn/news/detail-860504.html
一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)!不論你是正從事IT行業(yè)的老鳥或是對(duì)IT行業(yè)感興趣的新人,都?xì)g迎加入我們的的圈子(技術(shù)交流、學(xué)習(xí)資源、職場(chǎng)吐槽、大廠內(nèi)推、面試輔導(dǎo)),讓我們一起學(xué)習(xí)成長!
到了這里,關(guān)于使用Logstash同步mysql數(shù)據(jù)到Elasticsearch(親自踩坑)_將mysql中的數(shù)據(jù)導(dǎo)入es搜索引擎利用logstash(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!