国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

離線數(shù)倉建設之數(shù)據(jù)導出

這篇具有很好參考價值的文章主要介紹了離線數(shù)倉建設之數(shù)據(jù)導出。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

為了方便報表應用使用數(shù)據(jù),需將ADS各項指標統(tǒng)計結果導出到MySQL,方便熟悉 SQL 人員使用。

1 MySQL建庫建表

1.1 創(chuàng)建數(shù)據(jù)庫

創(chuàng)建car_data_report數(shù)據(jù)庫:

CREATE DATABASE IF NOT EXISTS car_data_report
# 字符集
DEFAULT CHARSET utf8mb4
# 排序規(guī)則
COLLATE utf8mb4_general_ci;

1.1.2 創(chuàng)建表

① 里程相關統(tǒng)計

創(chuàng)建ads_mileage_stat_last_month表,存儲里程相關統(tǒng)計數(shù)據(jù)。

DROP TABLE IF EXISTS ads_mileage_stat_last_month;

CREATE TABLE ads_mileage_stat_last_month (
  vin VARCHAR(20) COMMENT '汽車唯一ID',
  mon VARCHAR(7) COMMENT '統(tǒng)計月份',
  avg_mileage INT COMMENT '日均里程',
  avg_speed DECIMAL(16, 2) COMMENT '平均時速分子',
  danger_count DECIMAL(16, 2) COMMENT '平均百公里急加減速次數(shù)'
) COMMENT '里程相關統(tǒng)計';
② 告警相關統(tǒng)計

創(chuàng)建ads_alarm_stat_last_month表,存儲告警相關的統(tǒng)計數(shù)據(jù)。

DROP TABLE IF EXISTS ads_alarm_stat_last_month;

CREATE TABLE ads_alarm_stat_last_month (
  vin VARCHAR(20) COMMENT '汽車唯一ID',
  mon VARCHAR(7) COMMENT '統(tǒng)計月份',
  alarm_count INT COMMENT '告警次數(shù)',
  l1_alarm_count INT COMMENT '一級告警次數(shù)',
  l2_alarm_count INT COMMENT '二級告警次數(shù)',
  l3_alarm_count INT COMMENT '三級告警次數(shù)'
) COMMENT '告警相關統(tǒng)計';

3)溫控相關統(tǒng)計

創(chuàng)建ads_temperature_stat_last_month表,存儲溫控相關的統(tǒng)計數(shù)據(jù)。

DROP TABLE IF EXISTS ads_temperature_stat_last_month;

CREATE TABLE ads_temperature_stat_last_month (
  vin VARCHAR(20) COMMENT '汽車唯一ID',
  mon VARCHAR(7) COMMENT '統(tǒng)計月份',
  max_motor_temperature INT COMMENT '電機最高溫度',
  avg_motor_temperature DECIMAL(16, 2) COMMENT '電機平均溫度',
  max_motor_controller_temperature INT COMMENT '電機控制器最高溫度',
  avg_motor_controller_temperature DECIMAL(16, 2) COMMENT '電機控制器平均溫度',
  max_battery_temperature INT COMMENT '最高電池溫度',
  battery_temperature_abnormal_count INT COMMENT '電池溫度異常值次數(shù)'
) COMMENT '溫控相關統(tǒng)計';

4)能耗相關統(tǒng)計

創(chuàng)建ads_consume_stat_last_month表,存儲能耗相關的統(tǒng)計數(shù)據(jù)。

DROP TABLE IF EXISTS ads_consume_stat_last_month;

CREATE TABLE ads_consume_stat_last_month (
  vin VARCHAR(20) COMMENT '汽車唯一ID',
  mon VARCHAR(7) COMMENT '統(tǒng)計月份',
  soc_per_charge DECIMAL(16, 2) COMMENT '次均充電電量',
  duration_per_charge DECIMAL(16, 2) COMMENT '次均充電時長',
  charge_count INT COMMENT '充電次數(shù)',
  fast_charge_count INT COMMENT '快充次數(shù)',
  slow_charge_count INT COMMENT '慢充次數(shù)',
  fully_charge_count INT COMMENT '深度充電次數(shù)',
  soc_per_100km DECIMAL(16, 2) COMMENT 'soc百公里平均消耗',
  soc_per_run DECIMAL(16, 2) COMMENT '每次里程soc平均消耗',
  soc_last_100km DECIMAL(16, 2) COMMENT '最近百公里soc消耗'
) COMMENT '能耗主題統(tǒng)計';

2 數(shù)據(jù)導出

DataX作為數(shù)據(jù)導出工具,并選擇HDFSReader和MySQLWriter作為數(shù)據(jù)源和目標。

2.1 編寫DataX配置文件

我們需要為每個表編寫一個DataX配置文件。以ads_alarm_stat_last_month為例:

{
  "job": {
    "setting": {
      "speed": {
        "channel": 1  // DataX 作業(yè)的并發(fā)通道數(shù),一般根據(jù)系統(tǒng)資源進行調整,1 表示單通道
      }
    },
    "content": [
      {
        "reader": {
          ...
        },
        "writer": {
          "name": "mysqlwriter",  // 寫入數(shù)據(jù)的插件類型為 MySQL 數(shù)據(jù)庫寫入
          "parameter": {
            "writeMode": "replace",  // 寫入模式為替換(如果表存在則先刪除再寫入)
            "username": "root",  // 數(shù)據(jù)庫用戶名
            "password": "000000",  // 數(shù)據(jù)庫密碼
            "column": [  // 寫入的列信息,包括 vin、mon、alarm_count、l1_alarm_count、l2_alarm_count、l3_alarm_count
              "vin",
              "mon",
              "alarm_count",
              "l1_alarm_count",
              "l2_alarm_count",
              "l3_alarm_count"
            ],
            "connection": [  // 數(shù)據(jù)庫連接信息列表,支持多個數(shù)據(jù)庫連接
              {
                "jdbcUrl": "jdbc:mysql://hadoop102:3306/car_data_report?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8",  // MySQL 數(shù)據(jù)庫連接地址,設置了 SSL、公鑰檢索、Unicode 編碼等參數(shù)
                "table": [  // 寫入的數(shù)據(jù)庫表列表,這里只寫入 ads_alarm_stat_last_month 表
                  "ads_alarm_stat_last_month"
                ]
              }
            ]
          }
        }
      }
    ]
  }
}

導出路徑參數(shù)path并未寫死,需在提交任務時通過參數(shù)動態(tài)傳入,參數(shù)名稱為exportdir。

模版配置參數(shù)解析:

HDFSReader:

離線數(shù)倉建設之數(shù)據(jù)導出

即:

"reader": {
  "name": "hdfsreader",  // 讀取數(shù)據(jù)的插件類型為 HDFS 文件讀取
  "parameter": {
    "path": "${exportdir}",  // HDFS 文件路徑,使用 ${exportdir} 變量表示動態(tài)路徑
    "defaultFS": "hdfs://hadoop102:8020",  // HDFS 默認文件系統(tǒng)地址
    "column": [  // 需要讀取的列信息,這里使用通配符 * 表示讀取所有列
      "*"
    ],
    "fileType": "text",  // 文件類型為文本文件
    "encoding": "UTF-8",  // 文件編碼格式為 UTF-8
    "fieldDelimiter": "\t",  // 字段分隔符為制表符
    "nullFormat": "\\N"  // 空值格式為 \N
  }
},

MySQLWriter:

離線數(shù)倉建設之數(shù)據(jù)導出

"writer": {
  "name": "mysqlwriter",  // 寫入數(shù)據(jù)的插件類型為 MySQL 數(shù)據(jù)庫寫入
  "parameter": {
    "writeMode": "replace",  // 寫入模式為替換(如果表存在則先刪除再寫入)
    "username": "root",  // 數(shù)據(jù)庫用戶名
    "password": "000000",  // 數(shù)據(jù)庫密碼
    "column": [  // 寫入的列信息,包括 vin、mon、alarm_count、l1_alarm_count、l2_alarm_count、l3_alarm_count
      "vin",
      "mon",
      "alarm_count",
      "l1_alarm_count",
      "l2_alarm_count",
      "l3_alarm_count"
    ],
    "connection": [  // 數(shù)據(jù)庫連接信息列表,支持多個數(shù)據(jù)庫連接
      {
        "jdbcUrl": "jdbc:mysql://hadoop102:3306/car_data_report?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8",  // MySQL 數(shù)據(jù)庫連接地址,設置了 SSL、公鑰檢索、Unicode 編碼等參數(shù)
        "table": [  // 寫入的數(shù)據(jù)庫表列表,這里只寫入 ads_alarm_stat_last_month 表
          "ads_alarm_stat_last_month"
        ]
      }
    ]
  }
}

2.2 DataX配置文件生成腳本

TODO(在下載的資料壓縮包里)datax_config_generator拷貝到/opt/module。

修改/opt/module/datax_config_generator/configuration.properties:

mysql.username=root
mysql.password=000000
mysql.host=hadoop102
mysql.port=3306
mysql.database.import=car_data
mysql.database.export=car_data_report
mysql.tables.import=
mysql.tables.export=
is.seperated.tables=0
hdfs.uri=hdfs://hadoop102:8020
import_out_dir=/opt/module/datax/job/import
export_out_dir=/opt/module/datax/job/export

執(zhí)行配置文件生成器:

java -jar datax-config-generator-1.0.1-jar-with-dependencies.jar

觀察生成的配置文件:

ll /opt/module/datax/job/export/

總用量 20
-rw-rw-r--. 1 atguigu atguigu  961 4月  26 19:47 car_data_report.ads_alarm_stat_last_month.json
-rw-rw-r--. 1 atguigu atguigu 1095 4月  26 19:47 car_data_report.ads_consume_stat_last_month.json
-rw-rw-r--. 1 atguigu atguigu 1062 4月  26 19:47 car_data_report.ads_electric_stat_last_month.json
-rw-rw-r--. 1 atguigu atguigu  939 4月  26 19:47 car_data_report.ads_mileage_stat_last_month.json
-rw-rw-r--. 1 atguigu atguigu 1083 4月  26 19:47 car_data_report.ads_temperature_stat_last_month.json

2.3 測試生成的DataX配置文件

以ads_trans_order_stats為例,測試用腳本生成的配置文件是否可用。

1)執(zhí)行DataX同步命令

python /opt/module/datax/bin/datax.py -p"-Dexportdir=/warehouse/car_data/ads/ads_order_stats" /opt/module/datax/job/export/tms_report.ads_order_stats.json

2)觀察同步結果

觀察MySQL目標表是否出現(xiàn)數(shù)據(jù)。

離線數(shù)倉建設之數(shù)據(jù)導出

2.4 編寫導出腳本

創(chuàng)建hdfs_to_mysql.sh

vim hdfs_to_mysql.sh
#!/bin/bash

# 設置 DataX 的安裝路徑
DATAX_HOME=/opt/module/datax

# 清理指定路徑下的空文件
# 參數(shù) $1: 待清理的路徑
handle_export_path() {
  for file in $(hadoop fs -ls -R "$1" | awk '{print $8}'); do
    # 檢查文件是否為空
    if hadoop fs -test -z "$file"; then
      echo "$file 文件大小為0,正在刪除..."
      # 刪除空文件
      hadoop fs -rm -r -f "$file"
    fi
  done
}

# 導出數(shù)據(jù)到指定路徑
# 參數(shù) $1: DataX 配置文件路徑
# 參數(shù) $2: 導出路徑
export_data() {
  datax_config="$1"
  export_dir="$2"
  # 調用清理空文件函數(shù)
  handle_export_path "$export_dir"
  # 執(zhí)行 DataX 導出命令
  $DATAX_HOME/bin/datax.py -p"-Dexportdir=$export_dir" "$datax_config"
}

# 主邏輯,根據(jù)傳入的參數(shù)執(zhí)行數(shù)據(jù)導出操作
case $1 in
  'ads_mileage_stat_last_month' | 'ads_alarm_stat_last_month' | 'ads_temperature_stat_last_month' | 'ads_electric_stat_last_month' | 'ads_consume_stat_last_month')
    # 導出單個表的數(shù)據(jù)
    export_data "/opt/module/datax/job/export/car_data_report.$1.json" "/warehouse/car_data/ads/$1"
    ;;
  'all')
    # 導出所有表的數(shù)據(jù)
    for table in 'ads_mileage_stat_last_month' 'ads_alarm_stat_last_month' 'ads_temperature_stat_last_month' 'ads_electric_stat_last_month' 'ads_consume_stat_last_month'; do
      export_data "/opt/module/datax/job/export/car_data_report.$table.json" "/warehouse/car_data/ads/$table"
    done
    ;;
  *)
    # 未知參數(shù),打印提示信息
    echo "Usage: $0 {ads_table_name | all}"
    echo "Example: $0 ads_mileage_stat_last_month"
    ;;
esac
chmod +x hdfs_to_mysql.sh

hdfs_to_mysql.sh all

關注我,緊跟本系列專欄文章,咱們下篇再續(xù)!

作者簡介:魔都技術專家兼架構,多家大廠后端一線研發(fā)經(jīng)驗,各大技術社區(qū)頭部專家博主。具有豐富的引領團隊經(jīng)驗,深厚業(yè)務架構和解決方案的積累。

負責:

  • 中央/分銷預訂系統(tǒng)性能優(yōu)化
  • 活動&優(yōu)惠券等營銷中臺建設
  • 交易平臺及數(shù)據(jù)中臺等架構和開發(fā)設計

目前主攻降低軟件復雜性設計、構建高可用系統(tǒng)方向。

參考:

  • 編程嚴選網(wǎng)

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!文章來源地址http://www.zghlxwxcb.cn/news/detail-840655.html

到了這里,關于離線數(shù)倉建設之數(shù)據(jù)導出的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 看這篇就明白大數(shù)據(jù)實時數(shù)倉、離線數(shù)倉、數(shù)據(jù)湖之間的關系

    看這篇就明白大數(shù)據(jù)實時數(shù)倉、離線數(shù)倉、數(shù)據(jù)湖之間的關系

    ??20世紀70年代,MIT(麻省理工)的研究員致力于研究一種優(yōu)化的技術架構,該架構試圖將業(yè)務處理系統(tǒng)和分析系統(tǒng)分開,即將業(yè)務處理和分析處理分為不同層次,針對各自的特點采取不同的架構設計原則,MIT的研究員認為這兩種信息處理的方式具有顯著差別,以至于必須采取完

    2024年02月08日
    瀏覽(21)
  • 離線數(shù)倉(一)【數(shù)倉概念、需求架構】

    離線數(shù)倉(一)【數(shù)倉概念、需求架構】

    ????????今天開始學習數(shù)倉的內容,之前花費一年半的時間已經(jīng)學完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基礎組件。把學過的內容用到實踐這是最重要的,相信會有很大的收獲。 ????????數(shù)據(jù)倉庫( Data Warehouse ),是 為企業(yè)制定決策,提供數(shù)

    2024年02月20日
    瀏覽(20)
  • 數(shù)倉報表數(shù)據(jù)導出——Hive數(shù)據(jù)導出至Clickhouse

    數(shù)倉報表數(shù)據(jù)導出——Hive數(shù)據(jù)導出至Clickhouse

    創(chuàng)建database 創(chuàng)建table 使用 spark-sql 查詢數(shù)據(jù),然后通過 jdbc 寫入Clickhouse。 創(chuàng)建Maven項目,pom.xml文件如下 創(chuàng)建HiveToClickhouse類 上傳hive.xml,hdfs.xml 以及core-site.xml文件到項目的resource目錄下 打包,并上傳hive-to-clickhouse-1.0-SNAPSHOT-jar-with-dependencies.jar到hadoop節(jié)點 執(zhí)行如下命令測試 為

    2024年02月16日
    瀏覽(41)
  • 離線數(shù)倉分層

    1、清晰數(shù)據(jù)結構 :數(shù)倉每一層都有對應的作用,方便在使用時更好定位與了解 2、數(shù)據(jù)血緣追蹤 :清晰知道表/任務上下游,方便排查問題,知道下游哪個模塊在使用,提升開發(fā)效率及后期管理維護 3、減少重復開發(fā) :完善數(shù)倉好中間層,減少后期不必要的開發(fā),從而減少資

    2024年02月06日
    瀏覽(22)
  • 阿里云生態(tài)離線數(shù)倉

    阿里云生態(tài)離線數(shù)倉

    ? ? ? ? 功能齊全:10多年大數(shù)據(jù)建設沉淀完整的平臺,覆蓋數(shù)據(jù)開發(fā)治理的全生命周期 ? ? ? ? 簡單易用:全圖形化界面,SQL為主的數(shù)據(jù)開發(fā)方式 ? ? ? ? 安全穩(wěn)定:雙11日千萬級任務穩(wěn)定調度,金融級數(shù)據(jù)安全保障 ? ? ? ? 開放兼容:?支持多種大數(shù)據(jù)引擎綁定,開放

    2024年02月05日
    瀏覽(21)
  • 一百八十六、大數(shù)據(jù)離線數(shù)倉完整流程——步驟五、在Hive的DWS層建動態(tài)分區(qū)表并動態(tài)加載數(shù)據(jù)

    一百八十六、大數(shù)據(jù)離線數(shù)倉完整流程——步驟五、在Hive的DWS層建動態(tài)分區(qū)表并動態(tài)加載數(shù)據(jù)

    經(jīng)過6個月的奮斗,項目的離線數(shù)倉部分終于可以上線了,因此整理一下離線數(shù)倉的整個流程,既是大家提供一個案例經(jīng)驗,也是對自己近半年的工作進行一個總結。 1、Hive的DWS層建庫建表語句 --如果不存在則創(chuàng)建hurys_dc_dws數(shù)據(jù)庫 create database if not exists hurys_dc_dws; --使用hurys_

    2024年02月07日
    瀏覽(20)
  • 【從0開始離線數(shù)倉項目】——新能源汽車數(shù)倉項目介紹

    【從0開始離線數(shù)倉項目】——新能源汽車數(shù)倉項目介紹

    目錄 1、數(shù)據(jù)倉庫概念 2、項目需求及架構設計 3、集群資源規(guī)劃設計 ?4、車輛日志字段說明 數(shù)據(jù)倉庫(Data Warehouse)是為企業(yè)提供數(shù)據(jù)支持,用以協(xié)助企業(yè)制定決策、改進業(yè)務流程和提高產品質量等方面的工具。它可以接收多種類型的輸入數(shù)據(jù),如業(yè)務數(shù)據(jù)、日志數(shù)據(jù)和爬蟲

    2024年02月13日
    瀏覽(23)
  • 一百八十二、大數(shù)據(jù)離線數(shù)倉完整流程——步驟一、用Kettle從Kafka、MySQL等數(shù)據(jù)源采集數(shù)據(jù)然后寫入HDFS

    一百八十二、大數(shù)據(jù)離線數(shù)倉完整流程——步驟一、用Kettle從Kafka、MySQL等數(shù)據(jù)源采集數(shù)據(jù)然后寫入HDFS

    經(jīng)過6個月的奮斗,項目的離線數(shù)倉部分終于可以上線了,因此整理一下離線數(shù)倉的整個流程,既是大家提供一個案例經(jīng)驗,也是對自己近半年的工作進行一個總結。 項目行業(yè)屬于交通行業(yè),因此數(shù)據(jù)具有很多交通行業(yè)的特征,比如轉向比數(shù)據(jù)就是統(tǒng)計車輛左轉、右轉、直行

    2024年02月07日
    瀏覽(20)
  • 離線數(shù)倉中,為什么用兩個flume,一個kafka

    實時數(shù)倉中,為什么沒有零點漂移問題? 因為flink直接取的事件時間 用kafka是為了速度快,并且數(shù)據(jù)不丟,那為什么既用了kafkachannel,也用了kafka,而不只用kafkachannel呢? 因為需要削峰填谷 離線數(shù)倉中,為什么用兩個flume,一個kafka,直接用taildirsource,kafkachannel,hdfssink不行嗎?

    2024年02月14日
    瀏覽(20)
  • 尚硅谷大數(shù)據(jù)項目《在線教育之離線數(shù)倉》筆記002

    尚硅谷大數(shù)據(jù)項目《在線教育之離線數(shù)倉》筆記002

    ?視頻地址:尚硅谷大數(shù)據(jù)項目《在線教育之離線數(shù)倉》_嗶哩嗶哩_bilibili 目錄 P025 P026 P027 P028 P029 P030 P031 P032 P033 P034 P035 P036 P037 P038 P025 在Hive所在節(jié)點部署Spark P026 3 )Hive on Spark 測試 (1)啟動hive客戶端 [atguigu@hadoop102 hive]$ hive (2)創(chuàng)建一張測試表 hive (default) create table stud

    2024年02月12日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包