亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Hadoop+Spark+Hive+Django實(shí)戰(zhàn):廚具銷(xiāo)售數(shù)據(jù)分析與可視化大屏全鏈路

Hadoop+Spark+Hive+Django實(shí)戰(zhàn):廚具銷(xiāo)售數(shù)據(jù)分析與可視化大屏全鏈路 做大數(shù)據(jù)方向的項(xiàng)目很多人第一反應(yīng)是先把 Hadoop、Spark 裝好然后發(fā)現(xiàn)真正難的從來(lái)不是安裝而是把從數(shù)據(jù)到展示的整條鏈路跑通。最近我在整理一套電商平臺(tái)廚具類(lèi)目的銷(xiāo)售數(shù)據(jù)分析系統(tǒng)技術(shù)棧是 Hadoop Spark Hive Django最后用可視化大屏把結(jié)果呈現(xiàn)出來(lái)。這個(gè)組合在很多教學(xué)項(xiàng)目和實(shí)際業(yè)務(wù)里都很典型但網(wǎng)上能搜到的基本都是單點(diǎn)教程——單獨(dú)講 Spark 優(yōu)化、單獨(dú)講 Django 接口、單獨(dú)講大屏模板很少有人把 Hive 表怎么建、Spark 任務(wù)怎么跑、Django 接口怎么給大屏供數(shù)這條鏈路完整串起來(lái)也沒(méi)有人講調(diào)試時(shí)最容易在哪個(gè)環(huán)節(jié)浪費(fèi)半天。這篇文章會(huì)把整個(gè)項(xiàng)目的實(shí)現(xiàn)邏輯和我在調(diào)試中踩過(guò)的坑完整整理出來(lái)適合準(zhǔn)備做大數(shù)據(jù)課程設(shè)計(jì)、以及剛接觸數(shù)據(jù)倉(cāng)庫(kù)和可視化開(kāi)發(fā)的人參考。我會(huì)從選型理由講起再按數(shù)據(jù)準(zhǔn)備、分析計(jì)算、接口對(duì)接、調(diào)試排障、項(xiàng)目交付的順序往下走最后給一些擴(kuò)展建議。內(nèi)容不求面面俱到但每個(gè)環(huán)節(jié)都會(huì)給出能直接落地的細(xì)節(jié)。1. 為什么這套組合值得做HadoopSparkHiveDjango 的分工與適用邊界1.1 廚具類(lèi)目數(shù)據(jù)量不大為什么還要上 Hadoop我自己也糾結(jié)過(guò)這個(gè)問(wèn)題一個(gè)廚具品類(lèi)的訂單明細(xì)撐死一年也就幾百萬(wàn)到兩千萬(wàn)行單獨(dú)拿 Pandas 也能跑分析為什么還要引入 Hadoop 這一套原因有兩個(gè)。第一個(gè)是數(shù)據(jù)形態(tài)不只是訂單明細(xì)還有商品維表、品牌維表、區(qū)域維表、評(píng)價(jià)流水join 起來(lái)以后中間結(jié)果會(huì)膨脹第二個(gè)是當(dāng)你要做的不是一次性報(bào)表而是可重復(fù)運(yùn)行的“分析系統(tǒng)”就必須有統(tǒng)一的存儲(chǔ)、統(tǒng)一的調(diào)度入口和穩(wěn)定的數(shù)據(jù)產(chǎn)出。Hive 先把數(shù)據(jù)倉(cāng)庫(kù)的分層和元數(shù)據(jù)管理做好Spark 接著跑復(fù)雜的清洗和聚合最后 Django 面向展示層提供接口整條鏈路各管一段后面接手的人也能按層維護(hù)。這個(gè)設(shè)計(jì)不是為了顯得高大上而是為了“好維護(hù)、好替換”。如果你只是臨時(shí)分析一張小表直接讀 CSV 當(dāng)然更快。但項(xiàng)目一旦掛上“系統(tǒng)”兩個(gè)字就意味著每天要跑、每周要更新、不同角色要依賴(lài)它做決策。這個(gè)時(shí)候數(shù)據(jù)分層、任務(wù)調(diào)度、結(jié)果落庫(kù)、接口輸出就不是可有可無(wú)的優(yōu)化項(xiàng)而是基本要求。Hadoop 在這套鏈路里承擔(dān)的其實(shí)是兩件事一是把原始文件安全地放到 HDFS 上二是給 Hive 提供分布式存儲(chǔ)底座Hive 負(fù)責(zé)把文件變成“能寫(xiě) SQL 的表”Spark 負(fù)責(zé)把復(fù)雜計(jì)算跑得足夠快Django 只負(fù)責(zé)把最終結(jié)果以接口形式送出去。1.2 各組件邊界別讓 Django 去算數(shù)也別讓 Hive 去實(shí)時(shí)響應(yīng)我在很多類(lèi)似項(xiàng)目里看到的最常見(jiàn)問(wèn)題是組件職責(zé)混亂。比如有人把大屏需要的數(shù)據(jù)直接用 Django 實(shí)時(shí)查 Hive前端點(diǎn)一次刷新后端就去執(zhí)行一個(gè)分布式 SQL運(yùn)氣好幾秒返回運(yùn)氣不好幾十秒頁(yè)面一直轉(zhuǎn)圈。這種寫(xiě)法在演示時(shí)還能忍真正連續(xù)點(diǎn)起來(lái)就會(huì)把 HiveServer2 的連接池打滿。組件職責(zé)邊界常見(jiàn)誤區(qū)HDFS原始文件與中間結(jié)果存儲(chǔ)把每張臨時(shí)表都存一份垃圾數(shù)據(jù)不清Hive元數(shù)據(jù)管理、分層寬表、離線 SQL 分析讓 Hive 支撐秒級(jí)在線查詢(xún)Spark復(fù)雜 ETL、大規(guī)模 Join、聚合、重分區(qū)全鏈路都寫(xiě)成 Spark 程序連小表也開(kāi)集群Django讀結(jié)果庫(kù)、輸出 JSON、控制權(quán)限在 Django 里直接跑 Hive SQL大屏展示趨勢(shì)、占比、地圖大屏直接連 HiveServer2正確的分工是Spark 算完結(jié)果寫(xiě)成 MySQL 里的聚合結(jié)果表Django 只讀 MySQL把結(jié)果轉(zhuǎn)成 JSON大屏只負(fù)責(zé) fetch 這些 JSON 并繪圖。MySQL 里存的不是原始流水而是按天、按類(lèi)目、按品牌匯總好的結(jié)果所以查詢(xún)量很小響應(yīng)速度才能穩(wěn)定在幾十毫秒級(jí)別。2. 廚具銷(xiāo)售數(shù)據(jù)如何變成 Hive 里可用的事實(shí)表2.1 數(shù)據(jù)來(lái)源與字段清單這套項(xiàng)目里沒(méi)有真實(shí)生產(chǎn)環(huán)境的數(shù)據(jù)授權(quán)我使用的是按電商后臺(tái)導(dǎo)出格式模擬的離線數(shù)據(jù)集字段結(jié)構(gòu)盡量貼近常見(jiàn)場(chǎng)景。如果你有平臺(tái)開(kāi)放接口或脫敏離線包處理流程完全一樣只是字段名需要對(duì)齊。我建議不要為了“真實(shí)”去抓取未經(jīng)授權(quán)的大規(guī)模頁(yè)面數(shù)據(jù)重點(diǎn)放在數(shù)據(jù)建模和分析鏈路上更有價(jià)值。廚具銷(xiāo)售明細(xì)的核心字段大致如下字段名類(lèi)型說(shuō)明order_idSTRING訂單編號(hào)業(yè)務(wù)上的唯一鍵product_idSTRING商品編號(hào)product_nameSTRING商品標(biāo)題category_l1STRING一級(jí)類(lèi)目比如鍋具、儲(chǔ)物、餐具category_l2STRING二級(jí)類(lèi)目比如不粘鍋、保鮮盒brand_nameSTRING品牌名priceDECIMAL(10,2)銷(xiāo)售標(biāo)價(jià)pay_amountDECIMAL(10,2)實(shí)際支付金額quantityINT購(gòu)買(mǎi)數(shù)量provinceSTRING收貨省份citySTRING收貨城市order_timeSTRING下單時(shí)間star_levelINT買(mǎi)家評(píng)價(jià)星級(jí)廚具類(lèi)目有個(gè)特點(diǎn)客單價(jià)波動(dòng)很大價(jià)格帶從幾十塊的調(diào)味盒到幾千塊的炒鍋都有而且消費(fèi)者購(gòu)買(mǎi)頻次低很多人是搬新家或者裝修廚房才會(huì)集中采購(gòu)。所以分析時(shí)不能只盯著銷(xiāo)量還要關(guān)注客單價(jià)、價(jià)格帶結(jié)構(gòu)、地域分布和跨品類(lèi)的連帶購(gòu)買(mǎi)。2.2 分層建表 DDL 與分區(qū)設(shè)計(jì)我的習(xí)慣是第一層 ODS 只做拷貝原字段長(zhǎng)什么樣就什么樣第二層 DWD 做類(lèi)型轉(zhuǎn)換、去重、空值補(bǔ)齊第三層 DWS 按維度輕度匯總最后一層 ADS 直接把給大屏展示的聚合結(jié)果落庫(kù)。這里貼一張 DWD 層的 Hive 建表腳本重點(diǎn)是分區(qū)和存儲(chǔ)格式CREATE TABLE IF NOT EXISTS dwd_kitchen_sale_detail ( order_id STRING, product_id STRING, product_name STRING, category_l1 STRING, category_l2 STRING, brand_name STRING, price DECIMAL(10,2), pay_amount DECIMAL(10,2), quantity INT, province STRING, city STRING, order_time STRING ) PARTITIONED BY (dt STRING) STORED AS ORC;為什么按天分區(qū)因?yàn)殡x線任務(wù)基本都是每天增量灌入按天分區(qū)可以讓每次寫(xiě)入只影響當(dāng)天數(shù)據(jù)歷史分區(qū)不用動(dòng)。為什么用 ORCORC 是列式存儲(chǔ)做聚合時(shí)只讀取需要的列I/O 會(huì)小很多。對(duì)于廚具這個(gè)量級(jí)的數(shù)據(jù)按天分區(qū)已經(jīng)足夠不需要再加二級(jí)分區(qū)。如果單日數(shù)據(jù)量真的到了千萬(wàn)行以上再考慮在分區(qū)字段上加 hash 分桶不要一開(kāi)始就過(guò)度設(shè)計(jì)。2.3 Spark 清洗不能跳過(guò)的三個(gè)環(huán)節(jié)數(shù)據(jù)從 ODS 到 DWD至少要過(guò)三關(guān)。第一關(guān)是去重同一個(gè)訂單可能因?yàn)閿?shù)據(jù)回溯或者重復(fù)同步出現(xiàn)多次用訂單號(hào)做去重保留最后一條第二關(guān)是空值處理品牌為空補(bǔ)“未知”價(jià)格為零或者是負(fù)數(shù)直接剔除坪效和客單價(jià)指標(biāo)最容易被臟數(shù)據(jù)帶偏第三關(guān)是日期規(guī)范化把原始時(shí)間字符串轉(zhuǎn)成標(biāo)準(zhǔn)格式保證后面按天聚合不會(huì)出現(xiàn)“2024/1/1”和“2024-01-01”同時(shí)存在的情況。df spark.sql(SELECT * FROM ods_kitchen_sale WHERE dt 2024-01-01) df df.dropDuplicates([order_id]) df df.filter(df.pay_amount 0) df df.withColumn(dt, F.to_date(F.col(order_time), yyyy-MM-dd HH:mm:ss)) df.write.mode(overwrite).format(hive).saveAsTable( dwd_kitchen_sale_detail, partitionBydt )為什么清洗邏輯放在 Spark 而不是完全依賴(lài) Hive因?yàn)?Hive 執(zhí)行 SQL 也是一樣能做的但 Spark 可以先把多張?jiān)幢聿⑿凶x進(jìn)來(lái)通過(guò) DataFrame 緩存復(fù)用中間結(jié)果寫(xiě)復(fù)雜 ETL 時(shí)代碼更直觀。更重要的是清洗和后續(xù)聚合可以放在同一個(gè) Spark 工程里避免多個(gè)引擎來(lái)回切換。3. 分析層實(shí)戰(zhàn)廚具銷(xiāo)售的核心指標(biāo)與 Spark 計(jì)算細(xì)節(jié)3.1 指標(biāo)清單要跟大屏一一對(duì)應(yīng)大屏不是把一堆圖表堆上去就完事指標(biāo)設(shè)計(jì)會(huì)直接決定數(shù)據(jù)模型的粗粒度。我在這個(gè)項(xiàng)目里的指標(biāo)清單是這樣拆的KPI 卡片總銷(xiāo)售額、總訂單量、客單價(jià)、銷(xiāo)量同比趨勢(shì)線按天/按周的銷(xiāo)售額和訂單量變化類(lèi)目結(jié)構(gòu)一級(jí)類(lèi)目銷(xiāo)售額占比鍋具、餐具、收納各自占多少品牌榜Top 10 品牌的銷(xiāo)量和銷(xiāo)售額地域分布分省銷(xiāo)售額熱力地圖服務(wù)體驗(yàn)退款率和好評(píng)率廚具是低頻高客單品類(lèi)單純看銷(xiāo)量容易失真。兩個(gè)品牌可能在銷(xiāo)量上差不多但一個(gè)靠幾十塊的保鮮盒沖量另一個(gè)靠上千塊的琺瑯鍋賺錢(qián)后者的商業(yè)價(jià)值明顯更高。所以每個(gè)指標(biāo)的背后最好都掛一個(gè)“業(yè)務(wù)問(wèn)題”而不是為了填滿大屏格子硬算。3.2 一個(gè)典型的 Spark SQL品牌價(jià)格帶分析品牌榜是最基礎(chǔ)的分析真正能說(shuō)明問(wèn)題的是疊加價(jià)格帶之后的品牌結(jié)構(gòu)。下面這段 Spark SQL 就是按品牌和價(jià)格檔位計(jì)算訂單數(shù)與銷(xiāo)售額SELECT brand_name, CASE WHEN pay_amount 50 THEN 低客單 WHEN pay_amount 200 THEN 中客單 ELSE 高客單 END AS price_level, COUNT(DISTINCT order_id) AS order_cnt, SUM(quantity) AS sales_cnt, ROUND(AVG(pay_amount), 2) AS avg_order_value FROM dwd_kitchen_sale_detail WHERE dt 2024-01-01 GROUP BY brand_name, CASE WHEN pay_amount 50 THEN 低客單 WHEN pay_amount 200 THEN 中客單 ELSE 高客單 END;大屏上的品牌榜只是這個(gè) SQL 去掉價(jià)格帶后的簡(jiǎn)化版。加價(jià)格帶之后可以很清楚地看到某個(gè)品牌是靠低價(jià)引流還是靠高客單品帶動(dòng)銷(xiāo)售這對(duì)運(yùn)營(yíng)選品和投放策略都有參考價(jià)值。如果數(shù)據(jù)量很大先把價(jià)格帶和銷(xiāo)量做一次預(yù)聚合再去 join 品牌維表可以明顯減少 shuffle 數(shù)據(jù)量。3.3 任務(wù)調(diào)度與結(jié)果回寫(xiě)分析任務(wù)不能每次手動(dòng)跑。我會(huì)把整段分析邏輯寫(xiě)成一個(gè)analysis_job.py每天凌晨用調(diào)度平臺(tái)或 cron 觸發(fā)一次。關(guān)鍵是把結(jié)果按天分區(qū)覆蓋寫(xiě)避免大屏看到過(guò)期或者重復(fù)的數(shù)據(jù)。Spark 任務(wù)的提交命令長(zhǎng)這樣spark-submit \ --master yarn \ --deploy-mode cluster \ --num-executors 4 \ --executor-cores 4 \ --executor-memory 6g \ --driver-memory 2g \ --conf spark.sql.shuffle.partitions200 \ analysis_job.py參數(shù)不要直接抄網(wǎng)上的。executor 數(shù)量和內(nèi)存取決于你實(shí)際集群的資源。我見(jiàn)過(guò)太多人把 executor memory 寫(xiě)到 16g但 Yarn 隊(duì)列里根本沒(méi)那么多資源結(jié)果任務(wù)一直排隊(duì)或者被殺死。先用默認(rèn)參數(shù)跑通再根據(jù) Spark UI 里的運(yùn)行時(shí)間和數(shù)據(jù)量逐步調(diào)整。3.4 處理數(shù)據(jù)傾斜的小經(jīng)驗(yàn)按品牌或區(qū)域聚合時(shí)最容易遇到數(shù)據(jù)傾斜幾個(gè)爆款品牌占了大部分?jǐn)?shù)據(jù)導(dǎo)致某個(gè) executor 處理的數(shù)據(jù)量是其他人的好幾倍整體任務(wù)被拖慢。最簡(jiǎn)單的處理辦法是先把熱點(diǎn)數(shù)據(jù)識(shí)別出來(lái)單獨(dú)計(jì)算再和非熱點(diǎn)結(jié)果合并。更通用的做法是給 join 鍵加上一個(gè)隨機(jī)后綴做“打散”把一個(gè)大 key 拆成多個(gè)小 key最后再按真實(shí) key 聚合。對(duì)于廚具這個(gè)數(shù)據(jù)量先看指標(biāo)結(jié)果是否符合預(yù)期再?zèng)Q定要不要做這些復(fù)雜度較高的優(yōu)化。4. Django 接口與大屏數(shù)據(jù)對(duì)接讓分析結(jié)果真正被“看見(jiàn)”4.1 接口設(shè)計(jì)直接按大屏組件拆Django 端的接口不要設(shè)計(jì)成一個(gè)“萬(wàn)能查詢(xún)接口”。最省事的方式是前端大屏有幾個(gè)組件后端就提供幾個(gè)對(duì)應(yīng)接口每個(gè)接口只返回一個(gè)圖表所需的數(shù)據(jù)。這個(gè)項(xiàng)目的接口大致是這樣接口路徑返回內(nèi)容/api/v1/overview/kpi總銷(xiāo)售額、總訂單量、客單價(jià)/api/v1/overview/trend每日銷(xiāo)售額和訂單量列表/api/v1/category/ratio各一級(jí)類(lèi)目銷(xiāo)售額占比/api/v1/brand/topTop10 品牌銷(xiāo)量與銷(xiāo)售額/api/v1/region/heat各省銷(xiāo)售額熱力數(shù)據(jù)/api/v1/review/cloud評(píng)價(jià)關(guān)鍵詞統(tǒng)計(jì)統(tǒng)一返回格式{code: 0, data: ...}數(shù)據(jù)異常時(shí) code 非 0前端好做統(tǒng)一判斷。Django 視圖層寫(xiě)起來(lái)非常輕下面是其中一個(gè)接口的示例from django.http import JsonResponse from django.core.cache import cache def sale_trend(request): data cache.get(sale_trend) if data is None: data list( ResultTrend.objects.order_by(dt).values(dt, sales) ) cache.set(sale_trend, data, 600) return JsonResponse({code: 0, data: data})大屏頁(yè)面通常幾秒輪詢(xún)一次如果每次請(qǐng)求都打 MySQL即使結(jié)果表只有幾百行壓力也不大但加上緩存更穩(wěn)妥而且能避免大屏多個(gè)圖表同時(shí)刷新時(shí)造成短時(shí)尖峰。4.2 大屏端怎么接數(shù)據(jù)大屏我用的是 ECharts工程結(jié)構(gòu)很簡(jiǎn)單一個(gè) index.html一個(gè) api.js一個(gè) charts.js。前端從接口拿到數(shù)據(jù)之后只需要把數(shù)據(jù)映射到圖表 option 里。比如趨勢(shì)圖的靈魂代碼就這幾行async function loadTrend() { const res await fetch(/api/v1/overview/trend); const json await res.json(); trendChart.setOption({ xAxis: { data: json.data.map(i i.dt) }, series: [{ data: json.data.map(i i.sales) }] }); }有一點(diǎn)要注意大屏上顯示的標(biāo)題、時(shí)間范圍、單位最好都從接口或者統(tǒng)一配置里讀取不要寫(xiě)死在圖表代碼里。廚具銷(xiāo)售數(shù)據(jù)經(jīng)常要按周、按月切換寫(xiě)死之后每次改都要翻代碼維護(hù)成本很高。4.3 為什么要在 Django 和 Hive 之間加一個(gè)結(jié)果庫(kù)這是整套架構(gòu)里最關(guān)鍵的一步。Spark 分析完幾千萬(wàn)行明細(xì)后真正給人看的聚合結(jié)果往往只有幾百行。把這些結(jié)果寫(xiě)進(jìn) MySQL 的一張結(jié)果表Django 每次訪問(wèn)只查詢(xún)幾百行響應(yīng)速度可以穩(wěn)定在幾十毫秒。如果直接把 HiveServer2 暴露給 Django隨便一次刷新都會(huì)觸發(fā)一個(gè)分布式查詢(xún)而且 HiveServer2 還有并發(fā)連接數(shù)限制大屏輪詢(xún)一多就到了瓶頸。結(jié)果庫(kù)的清洗也很重要每天 Spark 任務(wù)跑完后先用TRUNCATE或者按日期刪除舊數(shù)據(jù)再寫(xiě)入新結(jié)果避免昨天和今天的數(shù)據(jù)混在一起。大屏上的數(shù)值出現(xiàn)莫名其妙的跳變十有八九是因?yàn)闆](méi)有做覆蓋寫(xiě)。5. 踩坑記錄環(huán)境、資源、接口三層最容易翻車(chē)的地方5.1 SparkSQL 連 Hive 報(bào)“元數(shù)據(jù)初始化失敗”這個(gè)錯(cuò)幾乎每個(gè)第一次跑 Spark on Hive 的人都會(huì)遇到。現(xiàn)象是程序一提交就報(bào)MetaException或者Could not connect to MetaStore。排查鏈路我一般是這樣走的先確認(rèn)hive-site.xml、core-site.xml、hdfs-site.xml是否在 Spark 任務(wù)的 classpath 里再確認(rèn) Hive Metastore 進(jìn)程是否真的啟動(dòng)了hive --service metastore不能是只在某個(gè)終端里跑了一下就掛了然后看 Metastore 連接 MySQL 的賬號(hào)密碼和權(quán)限有沒(méi)有問(wèn)題最后檢查spark.sql.warehouse.dir對(duì)應(yīng)的 HDFS 目錄是否存在、當(dāng)前用戶有沒(méi)有讀寫(xiě)權(quán)限。本地模式跑 SparkSQL 讀集群 Hive 時(shí)最容易踩的是把一套單機(jī)版的配置文件放到 classpath 里導(dǎo)致 Spark 拿著 localhost 去找集群的 NameNode 和 Metastore結(jié)果當(dāng)然是一堆 Connection refused。先用bin/spark-sql --conf spark.sql.hive.metastore.jarsbuiltin做一個(gè)最小化驗(yàn)證再回到完整工程里排錯(cuò)效率會(huì)高很多。5.2 Yarn 作業(yè)被容器殺掉物理內(nèi)存超限另一個(gè)高頻問(wèn)題是在集群模式提交 Spark 任務(wù)后日志里出現(xiàn)Container is running beyond physical memory limits。很多人的第一反應(yīng)是加內(nèi)存但這樣往往治標(biāo)不治本。先看 Spark UI 中各個(gè) stage 的 Shuffle Read 和 Input 大小如果某個(gè) stage 的輸入特別大說(shuō)明分區(qū)數(shù)太少或者數(shù)據(jù)傾斜加內(nèi)存只是讓問(wèn)題晚一點(diǎn)爆發(fā)。如果確認(rèn)只是 Yarn 容器預(yù)留的內(nèi)存不夠應(yīng)該調(diào)整spark.executor.memoryOverhead給容器預(yù)留出堆外內(nèi)存和基礎(chǔ)進(jìn)程的開(kāi)銷(xiāo)。比如 executor memory 設(shè) 6g 的時(shí)候memoryOverhead 至少也要 1g 到 2g。另外不要把spark.sql.shuffle.partitions隨便設(shè)成 1000分區(qū)數(shù)量過(guò)多會(huì)讓每個(gè) executor 承擔(dān)大量的小 task任務(wù)調(diào)度開(kāi)銷(xiāo)比計(jì)算本身還大。5.3 Django 接口返回空了但 MySQL 里有數(shù)這類(lèi)問(wèn)題最讓人崩潰因?yàn)閿?shù)據(jù)明明在接口卻查不到。我排查一圈之后發(fā)現(xiàn)基本都是三個(gè)原因第一Django ORM 的模型字段名和 MySQL 列名對(duì)不上比如日期字段叫dt模型里寫(xiě)了date第二從 MySQL 讀出的Decimal和datetime類(lèi)型沒(méi)有轉(zhuǎn)成 JSON 可序列化的基本類(lèi)型第三緩存里存了上一次的空結(jié)果沒(méi)有及時(shí)清掉。解決思路也很直接給 ORM 模型字段名和 MySQL 列名做一個(gè)統(tǒng)一約定所有日期字段統(tǒng)一用字符串返回接口層加一個(gè)統(tǒng)一的 JSON 序列化函數(shù)把Decimal、datetime、date都轉(zhuǎn)成字符串或浮點(diǎn)數(shù)開(kāi)發(fā)環(huán)境在重啟 Django 服務(wù)后執(zhí)行一次cache.clear()避免被舊緩存干擾判斷。5.4 時(shí)間都花在版本不匹配上如果項(xiàng)目從零搭版本兼容性是決定調(diào)試效率的關(guān)鍵。我的經(jīng)驗(yàn)是盡量選一整套主版本配好的組合避免自己亂配。組件推薦版本說(shuō)明Hadoop3.3.x穩(wěn)定生態(tài)兼容好Hive3.1.xSpark 集成最常用版本Spark3.3.x對(duì) Hive 3.1 支持成熟Django4.2.x使用 LTS 版本更省心Python3.8 或 3.10不要用最新大版本MySQL8.0Hive 元數(shù)據(jù)和結(jié)果庫(kù)通用JDK 我建議用 JDK 8 或 11。JDK 17 和舊版 Hive 一起跑容易遇到非法反射訪問(wèn)的告警雖然不一定直接報(bào)錯(cuò)但會(huì)把日志刷得很亂影響排障判斷。6. 把整套系統(tǒng)變成能交付的“源碼文檔調(diào)試記錄”6.1 工程目錄怎么組織別人拿到能少問(wèn)十句話很多人交付項(xiàng)目只給一團(tuán)代碼別人拿到之后根本不知道從哪里下手。我習(xí)慣把工程按層拆開(kāi)讓數(shù)據(jù)流一眼能看出來(lái)sale-analysis/ ├── sql/ │ ├── 01_ods_ddl.sql │ ├── 02_dwd_ddl.sql │ └── 03_ads_ddl.sql ├── spark/ │ ├── analysis_job.py │ ├── config.py │ └── requirements.txt ├── django/ │ ├── manage.py │ ├── sale_api/ │ └── result_models.py ├── dashboard/ │ ├── index.html │ ├── api.js │ └── charts.js └── docs/ ├── 環(huán)境部署.md ├── 數(shù)據(jù)導(dǎo)入.md └── 調(diào)試FAQ.mdSQL 腳本放在一起是因?yàn)閿?shù)據(jù)庫(kù)表結(jié)構(gòu)是整個(gè)系統(tǒng)的地基。Spark 工程負(fù)責(zé)清洗和計(jì)算。Django 工程負(fù)責(zé)接口。dashboard 是大屏前端。docs 里放部署文檔和常見(jiàn)問(wèn)題。別人拿到這套目錄之后最多問(wèn)“啟動(dòng)命令是什么”不會(huì)再去問(wèn)“這張表在哪建的”“這個(gè)圖表的數(shù)據(jù)從哪來(lái)”。6.2 文檔要覆蓋的三件事第一件事是環(huán)境版本矩陣。把操作系統(tǒng)、JDK、Python、Hadoop、Hive、Spark、Django、MySQL 的版本全部列出來(lái)避免接手的人裝了一套完全不同的版本跑出各種詭異問(wèn)題。第二件事是啟動(dòng)順序。HDFS、Yarn、Hive Metastore、Spark 任務(wù)、Django 服務(wù)每一步的啟動(dòng)命令和驗(yàn)證方法都要寫(xiě)清楚。第三件事是數(shù)據(jù)初始化和自查方法。比如用SHOW PARTITIONS dwd_kitchen_sale_detail看分區(qū)有沒(méi)有生成用SELECT COUNT(*) FROM dwd_kitchen_sale_detail WHERE dt2024-01-01看當(dāng)天數(shù)據(jù)量是否正常。調(diào)試記錄不要只寫(xiě)最終答案。最有價(jià)值的寫(xiě)法是“報(bào)錯(cuò)關(guān)鍵字 復(fù)現(xiàn)命令 排查路徑 最終解決方式”。我自己調(diào)試的時(shí)候會(huì)把一段卡了兩個(gè)小時(shí)的報(bào)錯(cuò)記錄成模板下次再遇到同類(lèi)問(wèn)題直接在文檔里搜索關(guān)鍵字比重新從零查一遍快得多。6.3 這個(gè)系統(tǒng)還能往哪里擴(kuò)展如果有人打算繼續(xù)做二期我建議從幾個(gè)方向入手。任務(wù)調(diào)度可以替換成正式的調(diào)度平臺(tái)加失敗重試、告警和補(bǔ)數(shù)邏輯結(jié)果存儲(chǔ)可以換成 ClickHouse 或 Doris讓大屏支持任意時(shí)間段拖選不用每次重新觸發(fā)離線任務(wù)實(shí)時(shí)性要求上來(lái)之后可以在訂單鏈路前面加消息隊(duì)列把分鐘級(jí)實(shí)時(shí)趨勢(shì)和離線分析互補(bǔ)如果想做更完整的用戶分析就把加購(gòu)、收藏、瀏覽日志也接進(jìn)來(lái)做轉(zhuǎn)化漏斗和連帶購(gòu)買(mǎi)分析。最后說(shuō)一個(gè)我自己的小習(xí)慣每次改完 Spark 邏輯我會(huì)先清掉 Django 緩存再刷新大屏頁(yè)面確認(rèn)數(shù)據(jù)變化避免被舊數(shù)據(jù)誤導(dǎo)。整套系統(tǒng)做完之后比起某個(gè)算法寫(xiě)得多漂亮更讓我省心的是分層清晰、接口穩(wěn)定、調(diào)試記錄完整——這三樣才是這種數(shù)據(jù)系統(tǒng)能長(zhǎng)期跑下去的關(guān)鍵。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美午夜视频| 亚洲无码 国产无码| 亚洲操逼无码| 一级一性爱免费视频| 亚洲欧洲第二视频在线观看色图| 日韩不卡av一二三| 中文字幕高清精品一区| 91丝袜在线观看| 九九九九97| 宅男午夜在线视频| 六月丁香啪啪| 久久男女激情视频网站| 久久无码成人| 黄片视频观看| 九九九久久久| 毛片一区二区| 欧美色女人| 台湾佬中文娱乐网久久久久久久久久com | 亚洲综合有玛| 久久综合激情| 久久五月综合| 久久久久国产一区二| 欧美18 在线观看| 密臀成人视频久久久| 另类亚洲图色| 97网站在线观看| 亚洲情色1区| www.色五月| 国产粉嫩出水在线播放| 日韩性爱电影一区| 日本123区操B视频| 五月婷丁香| 色噜噜人妻丝袜a∨先锋影| 天天操夜夜操狠很操| 丁香五六月啪啪| 日本精品加勒比海一区| 无码人妻一区二区三区色欲aⅴ| 色九久| 伊人麻豆传媒| 亚洲啪啪视频免费| 色y情视频免费看| 亚洲av噜噜噜噜噜噜| 九热久| 综合网亚洲| 青草精品视频-日本久久久久网站| 精品少妇高潮久久| 天堂亚洲精品| 人妻丝袜日本| 乱操乱伦AV| 日本潮催一卡操| 日日操免费视频| 亚洲āv网址在线观看| 日本一区不卡| 九九Av| 99热| 日韩精品高清资源在线| 清纯唯美综合亚洲| 天天久久| 亚洲 无码 偷拍| 欧美激情性爱视频网站| 国产一区二区三区导航| 久久久久久人妻| 欧美国产日韩清纯唯美| 丰满精品人妻少妇久久字幕| 欧美天天综合在线| 亚洲色图尤物视频| 午夜福利视频在线一区| 六月色婷婷| 久久久久中出| 91亚洲图片| 欧在线一二区| 色色五月婷婷| 欧美国产一区二区三区麻豆传媒 | 免费人成在线观看网站品爱网| 中文字幕中文字幕一区二区| 色综合20p| 亚洲综合伊人无码久久| 国内毛片无遮挡国产| 91午夜无码| 99热66| 久久婷婷亚洲欧| 色哟哟精品1精品2| 亚洲国产高清福利视频| 日本免费不卡二区| 97超色| 丰满人妻一区二区三区色-百度| 激情抓乳插进去啪啪啪日韩 | 久久九九综合| 欧洲精品欧洲精品| 欧美片第一页| 狠狠五月天| 东北女人操比视频| 欧美性爱日韩高清| 色性综合| 久久久9999| 蜜桃无码AV一区二区| 97内射偷拍| 国产熟女自拍| 人人操人人插人www| 亚洲精品一二三四区| 亚洲国产精品久久久久婷婷老年| www.亚洲黄色| 啊啊啊啊啊啊啊国| 亚洲不雅视频1区二区| 亚洲美女自拍偷拍视频| 欧美在线|亚洲| 国产成人91一区二区三区| 粉嫩av在线一区二区| 亚洲91网。| 97香蕉网| 丰满人妻一区二区三区免费,| 天天舔天天日天天射| 亚洲欧洲日本精品中文a∨| 久久人妻视频网| 久久久久九九九九九| 激情 欧美 亚洲 小说| 99ri精品| 国产在线激情| 色欲日韩欧美在线一区| 91性| 欧美黄色大片在线观看 | 97超碰天天爱天天爱| 国产精品9999| 色综合中文字幕不卡| 清纯唯美激情| 九九热超碰97亚洲最新香蕉| h无码动漫在线观看| 激情四射五月天| 波多野结衣一级视频| 久久97资源 网| 八戒无码国产午夜福利| 91殴美大片| 亚洲网站一区二区在线| 美女大乳久久久久久久女人18| 天堂v无码免费视频| 99热精品青草在线| 色综合国产在线观看| 亚洲自拍小说| 欧美黑人精品一区二区| 久操国产在线| 亚洲一区二区三区麻豆传媒| 国产亚洲精品无码三区| 一二三区视频在线观看| 无码99| 日本不卡二区| 鸥美插入视频| 在线观看黄色电话| 国产高清自拍视频| 97天天插| 激情综合五月天| 香蕉视频欧美一卡二卡| 欧美精品三区| www.超碰| 先锋色眉乱伦资源| 久久久久久中文| 日产狠狠干| 国产美女口爆吞精视频| 屁股久久久久久| 国产天天骚| 中文字幕一区二区韩| 国产乱码久久久| 射丝袜高跟鞋99| 亚洲欧洲综合av在线| 台湾佬中文娱乐网久久久久久久久久com | 中国乱伦一区二区| 国产v亚洲v日韩v欧美v片另类| 欧美人妻色| 五月丁香在线| 人妻一区视频| 精品人妻一区二区三区四区石在线| 天天日天天操VV| 91五月天| 国产精品久久99日日| 欧美色图综合网| 你草精品在线视频| 国产av白丝| 亚洲国产成人精品无码专区| 人妻色偷色噜| 国产国产亚洲一二三久久| 久久免费中文字幕在线观看| 无码人妻丰满热妇又大又粗| 最新无码国产| 另类欧美色| 国产suv精品一区| 日本日日色视频| 人妻少妇久久久| 国产剧情AV不卡在线观看| 国产女大学生AV| 婷婷人妻激情| 在线电影亚洲色图| 国产传媒美日韩av| 天美国产精品| 精品久久久久,69国产成人精| 91在线视频观看国产| 精品欧美老熟女一二区| 9久久久久| 国产精品一区二区手机看片| 美女91AV| 欧美日韩亚洲天堂| 91蜜臀人妻中文字幕在线| 色天欧美| 97视频900| 国产人妻精品久久久一区二区三区 | 日产精品久久久一区二区| 美女黑人91神马| 少妇一区二区三区在线观看| 青青草亚洲一区| 人妻少妇精品一区二区三区| 加勒比大香蕉视频在线| 中文字幕在线观看视频www| 黑人无码一区二区| 加勒比伊人综合| 综合亚洲欧美| 精品久久久高清无码| 欧美色图亚洲色| 天天综合中文字幕 91| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 婷婷色一区| 啊啊啊不要好疼视频| 婷婷久久久| 日本三级R| 日韩性爱再线视频| 人人操AV| 91九九九馒头| 91jk色拍| 四虎在线免费视频| 欧美黑人168页欧美黑人167| 久久影视二区三区行押| 色香综合| 亚洲巨爆乳一区二区三区四季网| 中国操逼无码| 99亚洲天堂| 91无码中出人妻视频| 精品妇女一区二区三区| 亚洲 欧美 小说| 亚洲日韩欧美一区二区| 亚洲性天堂| 欧美性爽xyxOOOO| 国产AV激情无码久久无码| 黄色大香焦1级‘′‘| 色色婷婷五月天| 大香蕉伊人网WWWn0n| 亚洲淫乱骚妇AV| 黑人综合色| 熟女人妻一区二区三区| 精品高清一区二区三区三州| 久久a久久| 岛国人妻少妇av在线观看| 天天舔天天日天天射| 熟妇女伦乱视频视频| 一级性爱视频免费观看 | 男人的天堂在线| 人妖欧美一区二区| A片A5445444| 精品黑人一区二区| 成人熟女视频一区二区三区| 成人日本片久久久蜜桃| 操逼日批| 野狼激情网| 精品一二三区女同| 日日爱99| av九九| 日韩99神马视频播放| 欧美综合色,www| 人人摸.人人色| 天天添天天干电影| 中文字幕免费在线观看| 国产欧美精选激情视频| 十八禁网站在线| 91天天综合在线| 天天激情干| 殴美,日韩国产伦精品| 五毛骚逼极品美女怕怕| 免费A片三p视频| 亚洲精品美女久久久久久久久| 狠肏骚人妻| 美女91| 国产麻豆福利av在线播放| 日韩 人妻 精品| 中文字幕午夜精品久久久| 无码人妻精品一区二区三区99不卡| 乱色视频中文字幕| 亚洲AV色图一区| 最新国内自拍av免费| 久久国产99精品72福利 | 午夜黄色免费在线观看| 都市激情人妻一区二区青青操视频| 九九亚洲| 超碰79人人乐| 女性91网站| 午夜男人一级A片7777| 后入福利视频| 国产92麻豆天美精品色欲5| 欧美色图成人网一区二区| 亚洲天天在线| 综精品久久久aaaa| av网站国产主播在线| 67914亚洲精品| 亚洲综人网| 9999久久久久| 国产精品久久久亚洲第一牛牛_在线观看| 国产精品无码av在线| 啊啊啊啊啊啊啊啊啊啊在线观看| 91丨豆花丨熟女| 欧美日韩国产电影| 99视频精品| 国语精品对白| 六六久久日韩不卡| 国产精品白领在线观看| 欧美日韩亚洲高清不卡一区二区三区| 亚洲国产一级黄色视频| 天天夜夜久久| 国产女人极品高潮毛片| 人妻精品一区二区| 青青草在线视频欧美| 欧美熟妇成人一区二区| 亚洲有码第一页| 国产黄色 A 片免费看| 四虎在线免费视频| 日日夜夜干| av影片在线观看不卡| 国产夜夜操| 亚洲欧美自拍偷拍| 热热色青青草| 大香蕉免| 3p国产欧美99热| 国产欧美另类久久久精品课程| 人妻天天夜夜爽一区二区| 中文字幕在线免费观看2| 性生活无遮挡纯毛片在线看| 人妻精品视频一区二区| 强被迫伦姧在线观看无码网站| 人妻内射一区二区在线视频| 偷拍伦理视频| 中文字幕123| 人人操欧美风骚| 精品一二三区四视频| 激情五月天色色网| 青草草免费网站av| 99夜夜操| 丝袜色综合| 艳美熟妇先锋一二三区| 国产美女高潮叫床视频| 乱伦一二三区| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 色婷婷九月天天综合| 亚洲高清91| 日本中文字幕熟妇| 国产精品91一样| 国产一区二区av综合| 一区二区三区美女超清| 香蕉综合网| 久草精品一区| 少妇天堂网络| 欧美夜夜狠| 一区二区影院| av在线观看不卡网站| 欧美日韩中文视频播放| 床戏久久久av一区二区麻豆| 久久爱超碰网| 99re95| 大香蕉免费中文| 国产极品美女高潮无套在线观看| 国产传媒午夜理伦精品| 亚洲色图欧美一区二区不卡| KK色在线影院| 中文字幕诱惑制服人妻丝袜美丝袜美| 蜜桃视频精品一区二区三区| 日韩欧美视频青青| 五月丁香婷婷色| 美女尤物人人操| A片A5445444| 精品78| 97超碰9| 美女91网| 欧美激情 亚洲色图| 亚洲 另类 丝袜 自拍 动漫| 人人超碰在线观看黄| 五月天春色激情网| 大鸡吧尹人在线| 亚洲日本成人动漫| 一色网男人的天堂| 亚洲官网在线| 日日夜夜国产综合| 夜夜操一区二区| 夜夜嗷嗷一区二区| 国产女人9999| 久久久成人免费av电影| 美女t无毒不卡不卡| 男人天堂免费| 亚洲男人天堂手机版| 欧美性性性| 欧美精品庄| 国产精品日日摸夜夜添骚逼| 日B操| WWW啪啪的com| 中国女人内射6XXXXX| 日人妻视频91| 亚洲色图大香| 国产夜夜艹| 极品少妇久久久久| 美女爽到高潮91| 中文字幕制服诱惑| 无遮挡男女激烈动态图| 青娱乐欧美激情一区二区| www.av在线视频| 久久99午夜精品一区人妻| 天天爽人人综合免费7799| 九九久久精品| 一及黄久一点| 国产AV线| 国产 日韩,欧美 自拍| 欧美日韩国产一区二区小黄片大全| 久久av无码| 乱伦AVxx| 67194无码不卡| 色综合99999| 国产丁香精品露脸视频| 五十路熟女人妻一区二区在线观看 | av一区二区三区不卡| 精品欧美А∨无码黑人大荫蒂| 性做久久久久久久| 美女露胸露屁股| 狠综合网| 99999久久精| 日本性感人妻91| 亚洲毛片一级带毛片基地| 五月天社区| 午夜精品久久久久| 国产女人视频三四五区| 视频国产精品未满十八禁止在线观看| 色噜噜狠狠色综合日日| 和协影院中文字幕三区| v91av| 波多野结衣被操50分钟免费视频| 91九九| 天美传媒Av在线| 中文 人妻 制服| 最新三级网址| 91日日| 日夜精品| 婷婷色影院| AV在线资源| 欧美日韩97| 极品美女福利在线观看| 超碰这里只有精品| www国产无码| 日本精品第一视频在'| 亚洲色图美腿丝袜| 午夜视频久久久久一区| 日韩乱码av| 亚洲中文字幕av| 性开放中文AV高清无码免费看| 116美女午夜| 99999国产| 日韩性爱视频免费在线| 校园春色宗合网| 无码直播久久久| renqi久久久久久久久久久久| 亚洲第一男人天堂| 日本熟妇人妻中出视频| 欧美91网站| 国产日韩欧美中文在线播放| 啊啊啊啊啊啊好湿好爽视频| 欧美成人A√在线一区二区| 中文字暮97| 中文字幕三四五区| 五月婷婷激情网| 啪啪啪男女亚洲中文字幕99| 国产热RE99久久6国产精品首 | 国产精品嫩草影院午夜两性| 99r九九| 亚洲97| 欧美视频在线第3页| 91久久婷婷| 九九热超碰| 四虎影视精品| 日本美女性生活久久久久久久| 亚洲天堂加勒比| 26uuu欧美| 亚洲天堂男人的天堂| 欧美一级三级| 精品人妻一二三| 黄色小说亚洲| 黑人狂躁日本妞一区二区三区| 久久久久久久久久久999| 久久免费99精品久久久久久| 亚洲色图 图片| 欧美亚洲日本视频久久久| 久久精品男人的天堂| 伊人久久大香大香线蕉中文 | 首页亚洲国产高跟丝袜诱惑视频 | 97超碰人人模人人拍人人| 欧美综合第一| 人人射人人操人人摸| 神马久久久久久久久| 一区二区 韩日AV| 尤物网站91| 欧美少妇性乱| 日本福利二区视频| 日韩无码人妻| 日本中文字幕熟妇| 日韩人妻资源在线看| 国产欧美在线观看免费观看| 日本一久是| 亚洲午夜AV| 翔田千里AV无码秘 三区| 欧美综合制服在线| 六六久久日韩不卡| 北约熟女超碰| 天天干人人乐| 欧美亚州综合图片| 婷婷情色综合网| ..日韩av毛片精品久久久| 欧美另类丝袜熟女| 国产精品欧美激在线| 日韩性爱电影一区| 三级精品三级在线观看| 东北女人高潮视频| 亚洲黄色网址| 91狠婷| 最新日产中文在线麻豆| 婷婷丁香激情| 亚洲资源吧| 少妇极品熟妇人妻无码| 欧美后进式| 乱伦图一区| 96久久久| 99re黄 | 亚洲自拍偷拍视频在线| 欧美线天码中字| 男生女生啊啊啊啊| 中文字幕av色| 国产精品大香蕉| 国产亚洲女v在线观看| 欧美加勒比| 色婷婷日韩精品一区二区三区| 久久欧洲| 夜夜高潮夜夜爽高清视频一 | 成人网欧美风情| 色五月婷婷在线| 国产三级日产三级韩国三级| 日韩性爱免费观看视频| 久久九色| 四虎免费在线观看| 日本媚薬中文字幕在线| 欧美综合网站999| 操91| 久久↗↗| 少妇内射视频| 日本免费一区二区不卡 | 欧美综合色| 91日日夜夜| 亚洲熟女偷拍在线观看| 免费成人在线熟妇网| 青青操少妇| 亚洲射综合网| 99国产在线绯色一区| 亚洲国产一区二区三区在线| 欧美第一页性| 十八禁网站在线| 久久亚洲不卡| 熟女一区二区| 亚洲人在线| 久久精品视频28| 综合久欧洲| 欧美18禁91| 成人网欧美风情| 91骚妇| 五十路熟女工口| 91l欧美在线| 射丝袜大香蕉| 蜜桃午夜视频一区二区 | 国产97亚洲| 亚洲精品久久久久毛片A片拉屎 | 自拍二页| 职场同事知名国产国产精品久久欧美日韩| 久久久久久69国产一区二区| 影音先锋日本一区二区| 国产人伦a片信息免费片| 欧美日韩香蕉| 激情五月综合网| 日本91白丝| 9热9热综合网| 亚洲精品久久一区二区三区蜜桃臀| 97久久天天综合色天天综合色电影| 91久久久久| 中欧人妻丝袜中文字幕| 黑人白女精品一区| 色情五月丁香| 国产精品2020| 欧美久久人体| 精品人妻一区二区三区四区不卡在| 人人操,人人液| 欧美日韩国产高清在线一二三区 | 热G综合热G中文| 亚州欧美色图| 大香蕉强奸乱伦| 欧日韩不卡视.频| 欧美页片| 60秒不遮不挡| 亚洲国产一区二区入口| 九九成人视频| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 激情抓乳插进去啪啪啪日韩 | 日韩欧美女求操每天更新| 校园春色五月天| 成人麻豆av电影网站| 五月丁香影视| 99热在线只有精品| 午夜激情成人在线观看| 92福利社视频| 熟女露脸激情自拍视频| 人人操人人摸人人骑| 天天看,天天做| 欧美亚洲20p| 国产精品9999| 夜夜影视四色| 熟女欧美日韩综合婷婷| 人妻丝袜日本| 日本色色的视频| 精品美女在线视频| 高清孕妇孕交 交| 伊人黄色视频免费观看| 日韩在线97| 女人久久久| 日韩中文字幕在线视频观看| 精品176精品2| 亚洲无码国产探花在线观看| 99精品视频在线观看| 亚洲影视高清第一页| 免费?级毛片无码?∨蜜芽试看| 嗯嗯啊在线视频| 热G综合热G中文| 亚洲欧美中文一区二区三| 91麻豆天美传媒HD| 欧美福利视频啊啊啊啊| 久无码| 97国产人人| 色婷婷丁香五月| 男女香蕉一区二区| 欧日a| 日本不卡一区二区三区| 婷婷五月天综合网| 岛国艾薇凹凸视频天堂| 亚洲欧洲无码bt精品合集| 亚洲男人天堂2019| 91欧美色| 午夜天堂精品久久久久91| 日韩干B| www.91理论| 欧美熟妇亚洲版| 国产久久成人| 欧美亚洲高清不卡| 午夜一区二区三区国产| 青青伊人久久| 在线中文字幕极品av| AV中文字幕剧情1区2区3| 福利操逼| 职场同事知名国产国产精品久久欧美日韩 | 美女97超碰| 影音先锋每日最新资源在线观看| 欧美午夜色妇色鬼| 国产精品亚洲天堂网址| 激情视频一二三| 男人a天堂手机在线版| 97超级色碰碰| 丁香五月天激情综合| 超碰色97| 91美乳| 国产精品欧美日韩久久| 欧美亚洲韩国视频十五区| 99操视频| 精品久久久av无码免费| 另类av天堂| 韩国午夜理伦三级好看| 精品高清一区二区三区三州| 免看60秒涩涩视频| 亚洲综合小说另类图欧美视频激情小说色五月天 | 亚洲性刺激| 国产女人高潮视频| 人妻丰满熟妇一区二区三| 天天影视网色欲色香| 中文字幕一区av| 日韩偷拍一区二区三区| 在线小说视频一区| 青青11操操操操操操操操| 欧美的性爱网站免费| 大香蕉一人| AV高清一区| 免费一级毛片在线视频观看| 国产偷人伦激情在线观看| 蘋果手機免費看成人Av| 97电影院超碰| 一级黄色性爱A级片| 久久久久熟女| 人妻丝袜肏逼| 麻豆天美国美国产| 精品性爱一二三区| 日韩欧美大片免费高清啪啪| 欧美性少妇| 亚洲永久永久永久永久一级一级一级精品| 大香蕉免费乱伦视频| 日韩精品人妻| 97精品一区| 天天综合网1| 亚洲另类综合欧美| 麻豆啪啪啪视频| 伊人网青青| 少妇精品| 久久是精品| 色九九九九| 男人的天堂2019AV| 久久精品国产亚洲AV成人直播| 1769成人国产精品视频| 综合亚州欧美| 亚洲色图综合网| 欧美性区| 殴美牲| 婷婷激情四射| 国产成人无码高清| 老熟妇一区二区三区…| 日韩极品无码B| 搡老女人老91二区| 超碰导航97| 另类欧美| 99热大香蕉伊在线| 女生自91网站| 综合网欧| 亚洲限制级在线| 另类图片五月| 国产福利小视频高清在线观看| 国产精品高潮久久久无码| 亚洲九九视频| 撸无码不卡免费视频| 激情五月天校园春色网| 久久久久久久久久精| 69AV女优男人的天堂| 91亚洲黑人| 爱我干综合| 日韩久久激情精品| 丰满高潮18xxxx| 色乱二区| 黄片免费久久久久久久| 亚洲天堂AV在线播放| 日韩免费簧片| 亚洲成人精品在线一区| 神马九九九| 欧亚第一综合网| 久久久9品一区二区三区| 日日夜夜干| 无码精品一区二区三区潘金莲| 日韩成人精品| 亚洲三区视频| 亚洲一级性爱视频免费看| 欧美日韩不卡a片| 日本在线观看网址| 日韩免费高清大片在线| 麻豆国产97在线| 亚洲欧美日韩制服另类| 日韩黄片影院| 国产日韩精品无码去免费专区国产| 日韩欧美午夜一区二区| 国产精品久久久久久久AV大片 | 久综合国内精品自在自线| 国产一区二区免费福利片| 日韩性爱1级片视频| 亚洲欧美自拍偷拍| 久久久 国产精品| 日韩性爱小视频在线观看| AA丁香综合激情| 超碰97起碰| 久久久久久91香蕉国产| 久久夜夜夜| 高清无码91| 欧美综合网在线| 亚洲乱色熟女一区| 国产后入精品| 日本黄色裸日本黄色裸体| 麻豆传媒一区二区在线观看| 插插综合网天天影视网| 久久99干一本高清| 国产美女在线精品免费看| 欧美一级久久久久久久大片动画| 男人高清无码一区二区| 婷婷中文字幕| 久久久久9久久久久| 91碰碰| 九九九精品美女| 蜜乳av一区二区| 一区二区三区激情在线观看| 小草精彩毛片| 桃色人妻在线视频| 久久69| 家庭乱伦国产| 国产11页| 久噜噜| 91亚洲网| 国产亚洲精品av一区| 狠狠 91| 欧洲与亚洲欧美精品中文字幕| 天天综合,91入口| 亚洲国产成人精品999| 欧美网站免费| 久久999久| 一区二区视频在看| 亚洲色 国产 欧美 日韩| 婷婷激情五月| 精品女同一区| 久久久国产av美女私房| 欧美色图天堂在线| 欧美成人国产精品| 欧美极品| 男人兔费天堂| 色九色久| 91丨豆花丨熟女| 手机不卡视频不卡在线一二三区| 婷婷激情五月综合| 天天色黄色影院天天操| 夜夜夜久久| 国产路线专区| 国产尤物AV尤物在线观看不卡| 97色色色综合网站| 啊啊啊啊啊舒服| 亚洲AV无码AV吞精久久久久| 丝袜无码a片| 加勒比综合网| 操狠狠| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 岛国黄片网站| 日本超碰在线国产一区| 国产日本顶级一区二区三区| 亚洲免费成人精品电影| 久噜噜| 久久亚洲欧美中文字幕国语| 麻豆黄色五月天| 91欧美在线| 久久精彩免费视频| 大香蕉中文网| 欧美v亚洲v日韩v最新在线二区| 青青草玖玖爱| 日韩国产不卡在线视频| 韩日巨乳美女免费视频在线观看| 人妻丰满熟妇一区二区三| 夜夜操天天肏| 2019精品国产无码成人| 最新亚洲风情电影| 人人艹亚洲| 麻豆精品天美| 思思性爱| 欧美久久婷婷| 一牛影视成人片免费| 97超碰这里只有精品| 淫荡少妇免费| 97在线亚洲| 日本午夜精品理论片A级APP发布| 2020中文字幕在线| 国产欧美日韩精品中文| 丝袜美腿丝袜| 欧美色偷拍| 人人操人人色网| 国产超碰在线一区| 在线无码视频| 97 国产精品| 噜噜噜无码AV一级一级久久影院| 美女性91| 78p欧美| 精品日韩中文在线| 欧洲站一级二级三级h| 黄色性爱网网| 屁股久久久久久久久久| 人妻熟女一区在| 久久精品 六十路 熟女 欧美| 国产熟妇一区二区| 嫩草影院性色| 999综合网| 91伊人影视综合| 天天干夜夜操网| 夫妻天天操岛国视频| 麻豆婷婷成人一二三| 亚洲欧洲日韩国产自在线| 日本不卡免费二区| 宅男91视频在线播放| 操逼免费视频无码国产| 变态另类专区| 色爱欲亚洲| 强奸乱伦av电影| 久久久久久九九九| A啊啊在线观看| 五月婷丁香| 色色香蕉| 外站AV在线| 囯产精品强| 色色热| 全免费a敌肛交毛片免费| 欧美淫乱视频| 97视频620| 成人情色一区二区| 先锋色眉乱伦资源| 无码精品久久久久久亚洲| 97超碰免费生活| ss久久| 久久ww| 无码丰满熟妇一区二区浪潮AV| 亚洲欲色| 久久精品人妻一区二区| 密臀在线免费观看| 熟女精品一区二区三区| 日韩国产十八禁| 99热成人| 日本操逼视频导航| a片偷拍视频| 欧美色女人| 乱色老一区二区三区的观看方式| 久久久999网站| 麻豆这里只有精品| 男女激情黄色网址| 乱伦一区二区三区‘| 亚欧美色| 综合少妇网| 校园春色亚洲无码| 性色国产东北露脸精品视频| 婷婷亚洲综合| 一起草日韩| 成人97人人超碰人人| 久久人妻| 香蕉视频精品亚洲一区二区三区在线播| 日本熟妇一区二区三区| 综合色色婷婷| 色色色色网站| 欧美强奸乱能| 色黄色美女大长腿午夜视频| 九九九只有精品| 天天天操天天天爱| 997色在线| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 色一色综合网| 欧美日韩国产中文精品字幕自在自线| 夜夜草天天| 富女玩鸭子一级毛片| 91九色丨风韵犹存| 天久久久噜噜噜久久国产精品爽爽 | 午夜天堂啪啪| 狠狠色婷婷777| 在线国产一区二区av| 亚洲av影院在线观看| 色噜噜人妻丝袜a∨先锋影| 日韩无码黄色片| 亚洲超碰AV| 国产一区二区三区导航| 人人考人人摸人人干| 久久婷婷影院| 女人高潮抽搐喷水视频网站| 玖玖婷婷五月天| 色婷婷香蕉| 欧美日韩超碰在线| 欧美日韩222| 久久久久久久久久久久久久久乱码| 午夜欧美J进J出白浆流出久久久 | 日韩三级伊人| 日韩中文字幕视频| 91精品亚洲内射孕妇| 秋霞久久亚洲精品成人| 久久香蕉国产线看观看猫咪av| 国语av最新自产拍在线观看| 欧美精品999| 人妻少妇久久久| 国产福利夜| 999熟女精品| 精品一区二区2| 欧美综合自拍| 91操熟女| 亚洲图片激情综合另类| 自拍鲍鱼一区在线高清观看免费| 9久久精品| 日本免费一区二| 久久久免费懂色| 久久久成人免费av电影| 欧美乱欲| 亚洲欧美自拍偷拍| 一区二区三区精品久久| 大香蕉AV丝袜| 久噜噜| 天天干18禁| 国产精品亚洲一级av第二区| 久久99午夜精品一区人妻| 欧美|91色综合| 加勒比伊人综合| 亚洲性高潮| 在线a v| 伊色综合天堂色97| 欧美 日韩 另类 亚洲| 老熟女综合网| 老司机午夜精品视频| 竹菊影视国产一区二区| 桃色六月天| 大香蕉日亚洲日本亚大| 插入逼91| 欧美婷婷| 欧美性爱一区二区三区四区| 9久久久久久| 成人性爱视频在线看| 五月丁香啪啪网| 欧洲精品人妻| 国产精品精品系列在线观看| 精品一区二区综合熟妇| 亚洲精品蜜桃久久久一区二区三区| 亚洲日产专区婷婷| 看日韩黄片| 欧美日韩91| 午夜福利在线合集| 看免费的黄片| 亚洲精品97在线| 91高跟美女在线播放| 欧美色91| 在线观看岛国有码| 亚洲大色堂| 精品国产一区探花在线观看| 丰满人妻av一区二区三区| 久久久久密臀一区二区| 熟妇综合一区二区三区| 在线观看日韩av不卡| 亚洲自拍一区夜夜操| 东北少妇高潮zzzz| 久久久久久久人妻| 尤物视频新赏网鲜网色诱网| 国产精品久久久久亚洲av| 亚洲国产综合久久久性感熟妇| 欧美亚洲丝袜人妻制服中文99| 无码日韩网站| 亚洲色悠悠久久88| 100啪啪视频大全| Av色五月| 久草成人| 欧美极品少妇交| 色狠狠 - 百度| 麻豆性爱视频在线播放| 成人av性爱电影在线观看| 热天堂一区二区| 欧美色图综合网| 五月天色图影视| 欧美综合91| 超碰免费在线| 亚洲综合在线第一页| 日韩精品一二三四| BBBBB97COM| 96久久科窝| 草草草视频在线免费看| 国产久久一区二区午夜| 日韩欧美日韩| 在线综合 亚洲 欧美中文字幕| 久草成人| 欧美综合第一| 欧美 日韩 亚洲 春色| 青青操少妇| 久草网站免费在线观看| 亚欧操逼片在线观看 | 国产玖玖| 粉嫩av在线| 久操操| 强奸乱伦AV网址| 青青草狠狠撸| 丁香六月婷婷综合| 啊啊啊啊好多水| 好爽,再快点啊哈嗯嗯嗯嗯| 黄色大片免费在线| 麻豆激情综合| 亚洲AV无码久久久国产精品| 日日操夜夜操天天操免费观看麻豆| 精品久久久九九九孕妇| 国产一区在线播放| 91天美传媒在线| 囯产乱伦一区二区三女| 99热在线只有精品| 在线人妻熟女一区二区三区四区五区| 操婢日韩| 日韩久草| 草草影院在线视频| 精品国产一区二区三区四区在线看| a人欧美综合天堂麻豆| 黄色毛片A片| 天天综合网网欲色| 97色诱| 久操精品网| 欧美性爱第一页久久| 97网址97| 97色伦欧美| 国语国产操逼伊人AV网| 狠狠入| 日韩在线AB| 人人干人人搞人人摸| 一级一性爱免费视频| 91综合国产精品| 日韩人妻精品久久久久| 蜜乳AV一区| 欧美九九九九九| 2019午夜福利视频| 久久熟女人| 密乳AV免费观看| 东京热,男人的天堂| 99xav| 精品久久視頻在线| 国产特级毛片AAAAAA高潮流水 | 一级久久性爱视频| 欧美人与动性人交a| 色欧美在线| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 9999伦理视频| 熟妇操花| 一区二区三区黄色片a| 精品久9| 五毛骚逼极品美女怕怕| 亚洲不卡不卡中文字幕不卡| 自偷自拍的亚洲视频| 日本色色色网站免费看不卡| 白丝在线一区| 久久综合精品一区二区三区| 日日日日日| 亚洲欧美综合区自拍另类 | 成人资源中文字幕在线观看天天| 国产不卡免费在线视频| 91人精品妻入口| 国产福利合集| 久久精品一区一起草| h色99999| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 91网站18在线| 日韩一999精品| 这里只有精品视频在线| 国产又色又爽又舒服的三级视频 | 好看的久久不射无码影视影院| 青青青操| 欧美午夜精品久久久久久超碰| 国产一级操B视频| 一级片在线观看高清无码| 男女日B国产| 免费视频97| 国产9熟妇视频网站| 亚欧操逼片在线观看 | 丁香婷婷啪啪| 丁香五月激情综合国产| AV无码久久久精品| 福利社区午夜一区二区| 国产美女销魂在线观看不卡| 黄色香蕉视频网站一区| 日本淫乱女一区二区三区视频| 九九九九九九九九九国产精品| 国产人妻久久精品一区二区三区| 久草电影网| 日韩欧美天堂| 蜜臀99久久精品久久久久久| 日日AAvv| 欧美日韩狠狠爱| 激情内射| 91美| 中文字幕一区二区三区50路| 亚洲成人色情五月天丁香花| 99re这里| 久久中文字幕人妻熟av女蜜柚| 安微少妇操BBB|