從零開始實(shí)施推薦系統(tǒng)的落地部署——21.推薦系統(tǒng)案例(十一)使用logstash做數(shù)據(jù)同步

      網(wǎng)友投稿 666 2025-04-02

      導(dǎo)入數(shù)據(jù)到mysql

      從https://github.com/Kidand/dianping-project下載ddl.sql和dml.sql目錄/opt/datas,因?yàn)閙ysql是docker的形式安裝,要把SQL格式的文檔拷貝到mysql的/opt/目錄里。

      docker cp /opt/datas/ddl.sql zabbix-mysql:/opt/

      docker cp /opt/datas/dml.sql zabbix-mysql:/opt/

      如圖所示在mas5的主機(jī)里。

      使用命令進(jìn)入mysql的docker系統(tǒng)里:docker exec -it zabbix-mysql /bin/bash

      在登錄MySql數(shù)據(jù)庫里,建立數(shù)據(jù)庫dianpingdb。使用source /opt/ddl.sql建表。在進(jìn)入dianpingdb,使用source /opt/dml.sql導(dǎo)入數(shù)據(jù)到表中。

      2. 使用logstash做數(shù)據(jù)同步

      到官方https://www.elastic.co/cn/downloads/past-releases/logstash-7-6-2下載相對應(yīng)的logstash包,下載到/opt/elk/并進(jìn)到其目錄里。解壓tar -zvxf logstash-7.6.2.tar.gz。進(jìn)到logstash-7.6.2/bin的目錄里建立mysql目錄,把mysql-connector-java-5.1.40-bin.jar拷貝到mysql文件夾里。

      編輯jdbc.sql和last_value_meta,這兩個(gè)文件的主要作用是判斷是否要做數(shù)據(jù)更新。

      jdbc.conf這個(gè)配置文件比較重要。配置如下:

      input {

      jdbc {

      #設(shè)置timezone

      jdbc_default_timezone => "Asia/Shanghai"

      # mysql 數(shù)據(jù)庫鏈接,dianpingdb為數(shù)據(jù)庫名

      jdbc_connection_string => "jdbc:mysql://mas5.wuyi.com:3306/dianpingdb"

      # 用戶名和密碼

      jdbc_user => "root"

      jdbc_password => "123456"

      # 驅(qū)動(dòng) 注意:如果不要下面這行代碼,那就要把mysql-connector-java-5.1.40-bin.jar放到/opt/elk/logstash-7.6.2/logstash-core/lib/jars目錄里即可。

      jdbc_driver_library => "/opt/elk/logstash-7.6.2/bin/mysql/mysql-connector-java-5.1.40-bin.jar"

      # 驅(qū)動(dòng)類名

      jdbc_driver_class => "com.mysql.jdbc.Driver"

      jdbc_paging_enabled => "true"

      jdbc_page_size => "50000"

      codec => plain{ charset => "UTF-8"}

      last_run_metadata_path => "/opt/elk/logstash-7.6.2/bin/mysql/last_value_meta"

      # 執(zhí)行的sql 文件路徑+名稱;

      statement_filepath => "/opt/elk/logstash-7.6.2/bin/mysql/jdbc.sql"

      # 設(shè)置監(jiān)聽間隔? 各字段含義(由左至右)分、時(shí)、天、月、年,全部為*默認(rèn)含義為每分鐘都更新

      schedule => "* * * * *"

      }

      }

      output {

      elasticsearch {

      # ES的IP地址及端口

      hosts => ["mas2.wuyi.com:9200"]

      # 索引名稱

      index => "shop"

      # document_type => "_doc"

      # 自增ID 需要關(guān)聯(lián)的數(shù)據(jù)庫中有有一個(gè)id字段,對應(yīng)索引的id號(hào)

      document_id => "%{id}"

      codec => plain{ charset => "UTF-8"}

      }

      stdout {

      # JSON格式輸出

      codec => json_lines

      }

      }

      配置完成后,使用瀏覽器打開http://mas2.wuyi.com:5601/app/kibana#/dev_tools/console

      建立shop索引,代碼如下:

      PUT shop

      {

      "settings" : {

      "number_of_shards" : 1,

      "number_of_replicas" : 1},

      "mappings": {

      "properties": {

      "id":{

      "type":"integer"},

      "name":{

      "type":"text",

      "analyzer": "ik_max_word",

      "search_analyzer":"ik_smart"},

      "tags":{

      "type":"text",

      "analyzer": "whitespace",

      "fielddata":true},

      "location":{

      "type":"geo_point"},

      "remark_score":{

      "type":"double"},

      "price_per_man":{

      "type":"integer"},

      "category_id":{

      "type":"integer"},

      "category_name":{

      "type":"keyword"},

      "seller_id":{

      "type":"integer"},

      "seller_remark_score":{

      "type":"double"},

      "seller_disabled_flag":{

      "type":"integer"}

      }

      }

      }

      運(yùn)行后,獲取的結(jié)果和右圖所示一樣,說明創(chuàng)建shop索引成功。

      使用命令執(zhí)行./logstash -f mysql/jdbc.conf

      雖然執(zhí)行成功,但是中文出現(xiàn)亂碼。即使在jdbc.conf添加input和output都添加codec => plain{ charset => "UTF-8"}還是出現(xiàn)亂碼。如圖所示:

      在http://mas2.wuyi.com:5601/app/kibana#/dev_tools/console使用GET /shop/_search查詢?nèi)恚€是亂碼。

      經(jīng)多次排查,有可能是之前mysql的編碼沒弄好出現(xiàn)的問題,進(jìn)入docker版的mysql,使用show variables like 'character%';查出character_set_client的值為latin1,使用set names utf8;命令把character的值都變?yōu)閡tf8,但是重啟docker生效后,character的值有變回到latin1。

      因?yàn)檫@個(gè)mysql配置的數(shù)據(jù)庫太多了,有hue,hive, zabbix。暫時(shí)不想弄這個(gè)mysql。明天再重新配置一個(gè)mysql再做測試。

      從零開始實(shí)施推薦系統(tǒng)的落地部署——21.推薦系統(tǒng)案例(十一)使用logstash做數(shù)據(jù)同步

      這次排查亂碼的原因,一直以為是logstash的問題,浪費(fèi)了很多時(shí)間,同時(shí)也發(fā)現(xiàn)了我對logstash還不熟悉,要多花點(diǎn)時(shí)間去學(xué)習(xí)logstash。

      彈性云服務(wù)器 ECS elasticsearch 推薦系統(tǒng)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何刪除多余的頁(如何刪除多余的頁眉橫線)
      下一篇:PowerPoint和Word中的圖表
      相關(guān)文章
      亚洲精品国自产拍在线观看| 国产成人精品久久亚洲| 久久精品亚洲日本佐佐木明希| 亚洲国产成人影院播放| 国产天堂亚洲国产碰碰| jizzjizz亚洲日本少妇| 亚洲AV蜜桃永久无码精品| 亚洲AV无码XXX麻豆艾秋| 亚洲国产精品99久久久久久| 亚洲狠狠婷婷综合久久蜜芽| 亚洲国产精品嫩草影院| 无码天堂亚洲国产AV| 婷婷综合缴情亚洲狠狠尤物| www.亚洲色图| 精品国产亚洲男女在线线电影| 中文字幕精品无码亚洲字 | 国产成人精品日本亚洲网址| 亚洲av日韩av综合| 99热亚洲色精品国产88| 亚洲欧美第一成人网站7777| 亚洲avav天堂av在线网毛片| 亚洲AV无码一区二区三区在线观看| 亚洲色偷偷狠狠综合网| 亚洲日产韩国一二三四区| 国产成A人亚洲精V品无码性色| 亚洲av中文无码乱人伦在线r▽ | 亚洲av日韩av无码| 亚洲精品综合一二三区在线| 精品亚洲成AV人在线观看| 亚洲乱码中文论理电影| 亚洲欧美日韩综合久久久| 国产成人综合久久精品亚洲| 国产亚洲精aa成人网站| 亚洲av午夜成人片精品网站 | 亚洲国产美女在线观看| 2019亚洲午夜无码天堂| 国产精品亚洲专一区二区三区| 亚洲日韩在线中文字幕第一页| 精品亚洲一区二区| 在线观看亚洲一区二区| 国产成人亚洲精品|