精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

利用 MapReduce分析明星微博數據實戰

大數據
互聯網的飛速發展本身也造就了一批互聯網明星,這些人借助新的手段,最大程度發揮了粉絲經濟的能量和作用,在互聯網時代賺得盆滿缽滿。正是基于這樣一個大背景,今天我們做一個分析明星微博數據的小項目

互聯網時代的到來,使得名人的形象變得更加鮮活,也拉近了明星和粉絲之間的距離。歌星、影星、體育明星、作家等名人通過互聯網能夠輕易實現和粉絲的互動,賺錢也變得***的簡單。同時,互聯網的飛速發展本身也造就了一批互聯網明星,這些人借助新的手段,***程度發揮了粉絲經濟的能量和作用,在互聯網時代賺得盆滿缽滿。

正是基于這樣一個大背景,今天我們做一個分析明星微博數據的小項目。

1、項目需求

自定義輸入格式,將明星微博數據排序后按粉絲數關注數 微博數分別輸出到不同文件中。

2、數據集

明星 明星微博名稱 粉絲數 關注數 微博數

俞灝明 俞灝明 10591367 206 558

李敏鎬 李敏鎬 22898071 11 268

林心如 林心如 57488649 214 5940

黃曉明 黃曉明 22616497 506 2011

張靚穎 張靚穎 27878708 238 3846

李娜 李娜 23309493 81 631

徐小平 徐小平 11659926 1929 13795

唐嫣 唐嫣 24301532 200 2391

有斐君 有斐君 8779383 577 4251

3、分析

自定義InputFormat讀取明星微博數據,通過自定義getSortedHashtableByValue方法分別對明星的fan、followers、microblogs數據進行排序,然后利用MultipleOutputs輸出不同項到不同的文件中

4、實現

1)、定義WeiBo實體類,實現WritableComparable接口

  1. package com.buaa; 
  2.  
  3. import java.io.DataInput; 
  4. import java.io.DataOutput; 
  5. import java.io.IOException; 
  6.  
  7. import org.apache.hadoop.io.WritableComparable; 
  8.  
  9. /**  
  10. * @ProjectName MicroblogStar 
  11. * @PackageName com.buaa 
  12. * @ClassName WeiBo 
  13. * @Description TODO 
  14. * @Author 劉吉超 
  15. * @Date 2016-05-07 14:54:29 
  16. */ 
  17. public class WeiBo implements WritableComparable<Object> { 
  18.     // 粉絲 
  19.     private int fan; 
  20.     // 關注 
  21.     private int followers; 
  22.     // 微博數 
  23.     private int microblogs; 
  24.      
  25.     public WeiBo(){}; 
  26.      
  27.     public WeiBo(int fan,int followers,int microblogs){ 
  28.         this.fan = fan; 
  29.         this.followers = followers; 
  30.         this.microblogs = microblogs; 
  31.     } 
  32.      
  33.     public void set(int fan,int followers,int microblogs){ 
  34.         this.fan = fan; 
  35.         this.followers = followers; 
  36.         this.microblogs = microblogs; 
  37.     } 
  38.      
  39.     // 實現WritableComparable的readFields()方法,以便該數據能被序列化后完成網絡傳輸或文件輸入 
  40.     @Override 
  41.     public void readFields(DataInput inthrows IOException { 
  42.         fan  = in.readInt(); 
  43.         followers = in.readInt(); 
  44.         microblogs = in.readInt(); 
  45.     } 
  46.      
  47.     // 實現WritableComparable的write()方法,以便該數據能被序列化后完成網絡傳輸或文件輸出  
  48.     @Override 
  49.     public void write(DataOutput out) throws IOException { 
  50.         out.writeInt(fan); 
  51.         out.writeInt(followers); 
  52.         out.writeInt(microblogs); 
  53.     } 
  54.      
  55.     @Override 
  56.     public int compareTo(Object o) { 
  57.         // TODO Auto-generated method stub 
  58.         return 0; 
  59.     } 
  60.  
  61.     public int getFan() { 
  62.         return fan; 
  63.     } 
  64.  
  65.     public void setFan(int fan) { 
  66.         this.fan = fan; 
  67.     } 
  68.  
  69.     public int getFollowers() { 
  70.         return followers; 
  71.     } 
  72.  
  73.     public void setFollowers(int followers) { 
  74.         this.followers = followers; 
  75.     } 
  76.  
  77.     public int getMicroblogs() { 
  78.         return microblogs; 
  79.     } 
  80.  
  81.     public void setMicroblogs(int microblogs) { 
  82.         this.microblogs = microblogs; 
  83.     } 

2)、自定義WeiboInputFormat,繼承FileInputFormat抽象類

  1. package com.buaa; 
  2.  
  3. import java.io.IOException; 
  4.  
  5. import org.apache.hadoop.conf.Configuration; 
  6. import org.apache.hadoop.fs.FSDataInputStream; 
  7. import org.apache.hadoop.fs.FileSystem; 
  8. import org.apache.hadoop.fs.Path; 
  9. import org.apache.hadoop.io.Text; 
  10. import org.apache.hadoop.mapreduce.InputSplit; 
  11. import org.apache.hadoop.mapreduce.RecordReader; 
  12. import org.apache.hadoop.mapreduce.TaskAttemptContext; 
  13. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
  14. import org.apache.hadoop.mapreduce.lib.input.FileSplit; 
  15. import org.apache.hadoop.util.LineReader; 
  16.  
  17. /**  
  18. * @ProjectName MicroblogStar 
  19. * @PackageName com.buaa 
  20. * @ClassName WeiboInputFormat 
  21. * @Description TODO 
  22. * @Author 劉吉超 
  23. * @Date 2016-05-07 10:23:28 
  24. */ 
  25. public class WeiboInputFormat extends FileInputFormat<Text,WeiBo>{ 
  26.  
  27.      @Override 
  28.      public RecordReader<Text, WeiBo> createRecordReader(InputSplit arg0, TaskAttemptContext arg1) throws IOException, InterruptedException { 
  29.           // 自定義WeiboRecordReader類,按行讀取 
  30.           return new WeiboRecordReader(); 
  31.      } 
  32.  
  33.      public class WeiboRecordReader extends RecordReader<Text, WeiBo>{ 
  34.             public LineReader in;  
  35.             // 聲明key類型 
  36.             public Text lineKey = new Text(); 
  37.             // 聲明 value類型 
  38.             public WeiBo lineValue = new WeiBo(); 
  39.              
  40.             @Override 
  41.             public void initialize(InputSplit input, TaskAttemptContext context) throws IOException, InterruptedException { 
  42.                 // 獲取split 
  43.                 FileSplit split = (FileSplit)input; 
  44.                 // 獲取配置  
  45.                 Configuration job = context.getConfiguration(); 
  46.                 // 分片路徑  
  47.                 Path file = split.getPath(); 
  48.                  
  49.                 FileSystem fs = file.getFileSystem(job);  
  50.                 // 打開文件    
  51.                 FSDataInputStream filein = fs.open(file); 
  52.                  
  53.                 in = new LineReader(filein,job);  
  54.             } 
  55.  
  56.             @Override 
  57.             public boolean nextKeyValue() throws IOException, InterruptedException { 
  58.                 // 一行數據 
  59.                 Text line = new Text(); 
  60.                  
  61.                 int linesize = in.readLine(line); 
  62.                  
  63.                 if(linesize == 0)  
  64.                     return false;  
  65.                  
  66.                 // 通過分隔符'\t',將每行的數據解析成數組 
  67.                 String[] pieces = line.toString().split("\t"); 
  68.                  
  69.                 if(pieces.length != 5){   
  70.                     throw new IOException("Invalid record received");   
  71.                 }  
  72.                  
  73.                 int a,b,c; 
  74.                 try{   
  75.                     // 粉絲   
  76.                     a = Integer.parseInt(pieces[2].trim()); 
  77.                     // 關注 
  78.                     b = Integer.parseInt(pieces[3].trim()); 
  79.                     // 微博數 
  80.                     c = Integer.parseInt(pieces[4].trim()); 
  81.                 }catch(NumberFormatException nfe){   
  82.                     throw new IOException("Error parsing floating poing value in record");   
  83.                 } 
  84.                  
  85.                 //自定義key和value值 
  86.                 lineKey.set(pieces[0]);   
  87.                 lineValue.set(a, b, c); 
  88.                  
  89.                 return true
  90.             } 
  91.              
  92.             @Override 
  93.             public void close() throws IOException { 
  94.                 if(in != null){ 
  95.                     in.close(); 
  96.                 } 
  97.             } 
  98.  
  99.             @Override 
  100.             public Text getCurrentKey() throws IOException, InterruptedException { 
  101.                 return lineKey; 
  102.             } 
  103.  
  104.             @Override 
  105.             public WeiBo getCurrentValue() throws IOException, InterruptedException { 
  106.                 return lineValue; 
  107.             } 
  108.  
  109.             @Override 
  110.             public float getProgress() throws IOException, InterruptedException { 
  111.                 return 0; 
  112.             } 
  113.              
  114.         } 

3)、編寫mr程序

  1. package com.buaa; 
  2.  
  3. import java.io.IOException; 
  4. import java.util.Arrays; 
  5. import java.util.Comparator; 
  6. import java.util.HashMap; 
  7. import java.util.Map; 
  8. import java.util.Map.Entry; 
  9.  
  10. import org.apache.hadoop.conf.Configuration; 
  11. import org.apache.hadoop.conf.Configured; 
  12. import org.apache.hadoop.fs.FileSystem; 
  13. import org.apache.hadoop.fs.Path; 
  14. import org.apache.hadoop.io.IntWritable; 
  15. import org.apache.hadoop.io.Text; 
  16. import org.apache.hadoop.mapreduce.Job; 
  17. import org.apache.hadoop.mapreduce.Mapper; 
  18. import org.apache.hadoop.mapreduce.Reducer; 
  19. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
  20. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
  21. import org.apache.hadoop.mapreduce.lib.output.LazyOutputFormat; 
  22. import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs; 
  23. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; 
  24. import org.apache.hadoop.util.Tool; 
  25. import org.apache.hadoop.util.ToolRunner; 
  26.  
  27. /**  
  28. * @ProjectName MicroblogStar 
  29. * @PackageName com.buaa 
  30. * @ClassName WeiboCount 
  31. * @Description TODO 
  32. * @Author 劉吉超 
  33. * @Date 2016-05-07 09:07:36 
  34. */ 
  35. public class WeiboCount extends Configured implements Tool { 
  36.     // tab分隔符 
  37.     private static String TAB_SEPARATOR = "\t"
  38.     // 粉絲 
  39.     private static String FAN = "fan"
  40.     // 關注 
  41.     private static String FOLLOWERS = "followers"
  42.     // 微博數 
  43.     private static String MICROBLOGS = "microblogs"
  44.      
  45.     public static class WeiBoMapper extends Mapper<Text, WeiBo, Text, Text> { 
  46.         @Override 
  47.         protected void map(Text key, WeiBo value, Context context) throws IOException, InterruptedException { 
  48.             // 粉絲 
  49.             context.write(new Text(FAN), new Text(key.toString() + TAB_SEPARATOR + value.getFan())); 
  50.             // 關注 
  51.             context.write(new Text(FOLLOWERS), new Text(key.toString() + TAB_SEPARATOR + value.getFollowers())); 
  52.             // 微博數 
  53.             context.write(new Text(MICROBLOGS), new Text(key.toString() + TAB_SEPARATOR + value.getMicroblogs())); 
  54.         } 
  55.     } 
  56.      
  57.     public static class WeiBoReducer extends Reducer<Text, Text, Text, IntWritable> { 
  58.         private MultipleOutputs<Text, IntWritable> mos; 
  59.  
  60.         protected void setup(Context context) throws IOException, InterruptedException { 
  61.             mos = new MultipleOutputs<Text, IntWritable>(context); 
  62.         } 
  63.  
  64.         protected void reduce(Text Key, Iterable<Text> Values,Context context) throws IOException, InterruptedException { 
  65.             Map<String,Integer> map = new HashMap< String,Integer>(); 
  66.              
  67.             for(Text value : Values){ 
  68.                 // value = 名稱 + (粉絲數 或 關注數 或 微博數) 
  69.                 String[] records = value.toString().split(TAB_SEPARATOR); 
  70.                 map.put(records[0], Integer.parseInt(records[1].toString())); 
  71.             } 
  72.              
  73.             // 對Map內的數據進行排序 
  74.             Map.Entry<String, Integer>[] entries = getSortedHashtableByValue(map); 
  75.              
  76.             for(int i = 0; i < entries.length;i++){ 
  77.                 mos.write(Key.toString(),entries[i].getKey(), entries[i].getValue()); 
  78.             }                
  79.         } 
  80.  
  81.         protected void cleanup(Context context) throws IOException, InterruptedException { 
  82.             mos.close(); 
  83.         } 
  84.     } 
  85.      
  86.     @SuppressWarnings("deprecation"
  87.     @Override 
  88.     public int run(String[] args) throws Exception { 
  89.         // 配置文件對象 
  90.         Configuration conf = new Configuration(); 
  91.          
  92.         // 判斷路徑是否存在,如果存在,則刪除 
  93.         Path mypath = new Path(args[1]); 
  94.         FileSystem hdfs = mypath.getFileSystem(conf); 
  95.         if (hdfs.isDirectory(mypath)) { 
  96.             hdfs.delete(mypath, true); 
  97.         } 
  98.          
  99.         // 構造任務 
  100.         Job job = new Job(conf, "weibo"); 
  101.         // 主類 
  102.         job.setJarByClass(WeiboCount.class); 
  103.  
  104.         // Mapper 
  105.         job.setMapperClass(WeiBoMapper.class); 
  106.         // Mapper key輸出類型 
  107.         job.setMapOutputKeyClass(Text.class); 
  108.         // Mapper value輸出類型 
  109.         job.setMapOutputValueClass(Text.class); 
  110.          
  111.         // Reducer 
  112.         job.setReducerClass(WeiBoReducer.class); 
  113.         // Reducer key輸出類型 
  114.         job.setOutputKeyClass(Text.class); 
  115.         // Reducer value輸出類型 
  116.         job.setOutputValueClass(IntWritable.class); 
  117.          
  118.         // 輸入路徑 
  119.         FileInputFormat.addInputPath(job, new Path(args[0])); 
  120.         // 輸出路徑 
  121.         FileOutputFormat.setOutputPath(job, new Path(args[1])); 
  122.          
  123.         // 自定義輸入格式 
  124.         job.setInputFormatClass(WeiboInputFormat.class) ; 
  125.         //自定義文件輸出類別 
  126.         MultipleOutputs.addNamedOutput(job, FAN, TextOutputFormat.class, Text.class, IntWritable.class); 
  127.         MultipleOutputs.addNamedOutput(job, FOLLOWERS, TextOutputFormat.class, Text.class, IntWritable.class); 
  128.         MultipleOutputs.addNamedOutput(job, MICROBLOGS, TextOutputFormat.class, Text.class, IntWritable.class); 
  129.          
  130.         // 去掉job設置outputFormatClass,改為通過LazyOutputFormat設置   
  131.         LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);  
  132.          
  133.          //提交任務   
  134.         return job.waitForCompletion(true)?0:1; 
  135.     } 
  136.      
  137.     // 對Map內的數據進行排序(只適合小數據量) 
  138.     @SuppressWarnings("unchecked"
  139.     public static Entry<String, Integer>[] getSortedHashtableByValue(Map<String, Integer> h) {   
  140.         Entry<String, Integer>[] entries = (Entry<String, Integer>[]) h.entrySet().toArray(new Entry[0]);   
  141.         // 排序 
  142.         Arrays.sort(entries, new Comparator<Entry<String, Integer>>() { 
  143.             public int compare(Entry<String, Integer> entry1, Entry<String, Integer> entry2) { 
  144.                 return entry2.getValue().compareTo(entry1.getValue()); 
  145.             }  
  146.         }); 
  147.         return entries;   
  148.     } 
  149.      
  150.     public static void main(String[] args) throws Exception { 
  151.         String[] args0 = { 
  152.                 "hdfs://ljc:9000/buaa/microblog/weibo.txt"
  153.                 "hdfs://ljc:9000/buaa/microblog/out/"  
  154.         }; 
  155.         int ec = ToolRunner.run(new Configuration(), new WeiboCount(), args0); 
  156.         System.exit(ec); 
  157.     } 

5、運行結果

 

責任編輯:Ophira 來源: 博客園
相關推薦

2011-12-20 09:54:43

微博

2012-02-07 16:20:55

訊飛語音

2024-10-14 14:19:02

2017-03-13 09:48:26

pysparkhive數據

2013-04-27 13:55:34

大數據全球技術峰會

2013-04-23 14:36:54

2016-04-06 10:02:23

手機微博運維監控

2011-08-30 14:48:02

2013-09-13 13:35:41

微淘微信微博

2020-02-20 10:45:51

Python數據疾病

2012-06-14 10:22:21

網易微博HTML5開發

2021-11-08 14:38:50

框架Scrapy 爬蟲

2021-11-09 09:46:09

ScrapyPython爬蟲

2012-06-18 14:22:09

HTML5

2014-10-15 16:32:43

MapReducehadoop

2009-04-17 10:07:42

2011-04-21 15:25:48

微博管理方案發帖審計

2011-04-21 14:47:52

微博管理方案用戶識別

2015-11-24 09:43:37

微博Docker混合云

2011-10-21 09:43:28

Python
點贊
收藏

51CTO技術棧公眾號

婷婷色一区二区三区| 正在播放一区| av大全在线观看| 亚洲精品**不卡在线播he| 色综合天天综合狠狠| 国产精品入口免费| 中文字幕一区二区三区精品 | 欧美精品久久久久| 中文字幕第3页| 国产精品999视频| 自拍偷拍第9页| 欧美电影院免费观看| 一区二区不卡在线视频 午夜欧美不卡在 | 全亚洲最色的网站在线观看| 亚洲av成人片色在线观看高潮| 亚洲一区资源| 国产精品乱人伦| 国产欧美在线一区二区| 中文字幕一区二区人妻视频| 香蕉精品视频在线观看| 亚洲第一色在线| 亚洲免费av一区二区三区| 国产在线高潮| 2023国产一二三区日本精品2022| 91精品久久久久久久| 日本在线观看中文字幕| 天天躁日日躁狠狠躁欧美巨大小说| 在线精品视频免费观看| 久操手机在线视频| 国产一级在线观看| 国产成人自拍高清视频在线免费播放 | 免费观看av网站| 另类视频一区二区三区| 色综合久久99| 一卡二卡三卡视频| 成人精品一区二区三区校园激情| 国产91色综合久久免费分享| 国产乱肥老妇国产一区二| 激情五月色婷婷| 国产影视精品一区二区三区| 日韩精品一区二区三区视频| 制服丝袜综合网| 中文不卡1区2区3区| 一区二区三区在线观看视频| 亚洲国产午夜伦理片大全在线观看网站 | 国产一区二区香蕉| 国产在线视频二区| 99久久亚洲精品| 亚洲精品资源在线| 高清中文字幕mv的电影| 91麻豆精品国产综合久久久 | 日本在线免费观看一区| 亚洲国产一二三区| 国内精品视频一区二区三区八戒| 国产精品狼人色视频一区| 97在线观看免费视频| 婷婷五月色综合香五月| 日韩欧美一区二区视频| 日本77777| 韩国精品视频在线观看| 欧美综合视频在线观看| 久久精品免费一区二区| 福利在线免费视频| 日韩毛片精品高清免费| 视频一区二区三区在线观看| 欧美性孕妇孕交| 成人短视频下载| 成人av片网址| 亚洲精品成人电影| 国产一区二区视频在线播放| 国产精品小说在线| 亚洲性猛交富婆| 日韩av一区二| 国产精品久久久久久久久久久久 | 国产激情视频网站| 96sao精品免费视频观看| 欧美性感一类影片在线播放| 999在线免费视频| 亚洲伦理影院| 日本高清成人免费播放| 国产成人久久婷婷精品流白浆| 久久综合在线观看| 青青青国内视频在线观看软件| 亚洲视频每日更新| 日本一二三区视频在线| 怡红院在线观看| 亚洲成人免费视频| 国产中文字幕在线免费观看| 精精国产xxxx视频在线播放| 欧美日韩免费在线| 国产男女无遮挡| 欧美日韩在线精品一区二区三区激情综合| 欧美性受极品xxxx喷水| 国产三级国产精品国产专区50| 青草综合视频| 日韩欧美区一区二| 91玉足脚交白嫩脚丫| 国产精品秘入口| 台湾天天综合人成在线| 欧美性色黄大片| av免费一区二区| 榴莲视频成人app| 精品久久久久久久久久久久久久久 | 性欧美疯狂xxxxbbbb| 免费在线观看的av网站| 高清在线视频不卡| 91极品视觉盛宴| 黄色三级视频在线播放| 黑人久久a级毛片免费观看| 亚洲剧情一区二区| 91禁男男在线观看| 黄色成人精品网站| 国产精品扒开腿爽爽爽视频| 波多野结衣爱爱| 国产+成+人+亚洲欧洲自线| 久久一区二区三区av| 中文日本在线观看| 亚洲成人午夜影院| 欧美 国产 小说 另类| 欧美videos粗暴| 亚洲精美色品网站| 91免费公开视频| 日韩亚洲国产精品| 国产精品流白浆视频| 亚洲av无码国产综合专区| 久久欧美一区二区| 男人天堂网站在线| 久久天堂av| 精品国产制服丝袜高跟| 欧美人与禽zoz0善交| 激情久久五月| 国产精品入口尤物| 天天干天天插天天操| 亚洲欧洲成人自拍| 亚洲三级视频网站| 久久久伦理片| 色中色综合影院手机版在线观看| 日本一区二区三区久久| 91亚洲国产成人精品一区二区三| 中文字幕乱码免费| 蜜桃精品在线| 日韩电影中文字幕| 影音先锋男人看片资源| 久久国产欧美| 黄色小网站91| 国产盗摄一区二区| 日韩午夜av电影| 中国美女黄色一级片| 日韩福利视频导航| 国产日产精品一区二区三区四区| 国产美女av在线| 欧美无砖砖区免费| 六月婷婷七月丁香| 夜夜嗨av一区二区三区网站四季av| 69堂成人精品视频免费| 蜜桃视频网站在线| 欧美精品色一区二区三区| 欧美丰满美乳xxⅹ高潮www| 夜夜嗨av一区二区三区网站四季av| 99re在线国产| 香蕉成人app免费看片| 91精品国产综合久久婷婷香蕉| 日本美女xxx| 日本亚洲最大的色成网站www| 你懂的网址一区二区三区| 美女高潮视频在线看| 亚洲精品av在线| 日本在线观看视频网站| 成人黄色在线网站| 日韩欧美一区二| 不卡在线一区二区| 91久久国产精品| 男女视频在线| 亚洲另类xxxx| 黄色www网站| 国产片在线观看| 6080yy午夜一二三区久久| 麻豆疯狂做受xxxx高潮视频| 成人h动漫精品一区二区| 国产成人a亚洲精v品无码| 日韩精品免费一区二区三区| 91久久精品一区二区别| 麻豆mv在线看| 中文字幕欧美专区| 亚洲国产福利视频| 一本色道亚洲精品aⅴ| 三级全黄做爰视频| 99久久99久久免费精品蜜臀| 色婷婷狠狠18| 激情久久一区| 一区国产精品| 日韩美女精品| 18成人在线| 9i看片成人免费高清| 久久天天躁日日躁| 欧美成人免费| 日韩久久精品一区| 亚洲婷婷久久综合| 亚洲国产成人av| 男人天堂资源网| 91麻豆国产福利在线观看| 欧美国产日韩另类 | 欧美中文在线字幕| 四虎久久免费| 亚洲免费福利视频| 99在线精品视频免费观看20| 日韩欧美在线视频免费观看| 全网免费在线播放视频入口| 久久久91精品国产一区二区精品 | 网站一区二区| 国产精品视频导航| 欧美a级在线观看| 欧美久久精品一级黑人c片| 黄色av网站在线| 亚洲精品www久久久| 国产精品熟女久久久久久| 色噜噜狠狠色综合中国| 国产91av视频| 亚洲卡通动漫在线| 99国产精品免费| 久久久久久电影| 99久久免费看精品国产一区| 国产精品资源网| 国产精品一区二区小说| 午夜一区不卡| 国产精品久久久久久久久久99| 欧美爱爱免费视频| 久久免费看少妇高潮| 亚洲一级Av无码毛片久久精品| 国内外成人在线| 亚洲另类第一页| 视频一区二区三区在线| 丰满少妇被猛烈进入高清播放| 亚洲经典自拍| av无码久久久久久不卡网站| 伊人情人综合网| 免费看av软件| 国产精品7m凸凹视频分类| 亚洲欧美日韩国产yyy| 精品视频网站| 日韩精品久久一区二区三区| 国模吧精品视频| 日本欧美色综合网站免费| 美女毛片一区二区三区四区最新中文字幕亚洲| 国产伦理久久久| 精品在线网站观看| 精品麻豆av| 午夜精品福利影院| 蜜桃视频在线观看成人| 亚洲色图美女| 日韩欧美电影一区二区| 精品日韩欧美一区| 性欧美精品一区二区三区在线播放| 国产一区二区三区日韩精品| 婷婷五月色综合| 欧美国产一级| 日本a在线天堂| 亚洲人www| 玩弄japan白嫩少妇hd| 蜜臀av亚洲一区中文字幕| 99re精彩视频| 国产伦精品一区二区三区免费迷| 深夜福利网站在线观看| 成人精品免费网站| 野外性满足hd| 国产欧美一区二区三区网站| 日本在线观看网址| 一卡二卡三卡日韩欧美| 日韩欧美高清在线观看| 色综合久久久网| 国产99久久久久久免费看| 91高清在线观看| 中文字幕一区二区三区人妻四季| 欧美日韩dvd在线观看| 亚洲av永久纯肉无码精品动漫| 欧美肥妇毛茸茸| 欧美一级性视频| 国产一区二区三区三区在线观看| 日本在线免费播放| 久久久久久噜噜噜久久久精品| gay欧美网站| 91精品视频免费| 六月丁香久久丫| 亚洲精品一区二区三区樱花 | 亚洲人成无码www久久久| 美日韩一区二区| 在线xxxxx| 国产精品乱码久久久久久| 久久精品免费在线| 欧美色窝79yyyycom| 懂色av成人一区二区三区| 亚洲少妇激情视频| 日本大片在线播放| 国产精品久久久久久久久粉嫩av| 亚洲三级av| 视频在线精品一区| 伊人久久亚洲美女图片| 久热在线视频观看| 97se狠狠狠综合亚洲狠狠| 四虎884aa成人精品| 色哟哟国产精品| 秋霞网一区二区| 久久精品国产精品亚洲| 欧亚在线中文字幕免费| 亚洲最大av网| 日韩免费久久| 国产成人无码一二三区视频| 高潮精品一区videoshd| 国产精品久久久视频| 精品av在线播放| 亚洲第一页综合| 日韩中文字幕视频| 美女写真久久影院| 韩日午夜在线资源一区二区 | 国产99久久九九精品无码| 国产精品中文欧美| 国精产品视频一二二区| 色视频一区二区| 人妻少妇精品无码专区| 美女999久久久精品视频 | 欧美四级电影网| 天堂在线一二区| 精品奇米国产一区二区三区| 91国在线视频| 亚洲香蕉成人av网站在线观看 | 成人精品影院| 日本少妇高潮喷水视频| 国产乱色国产精品免费视频| 精品女人久久久| 在线精品观看国产| 深夜福利在线观看直播| 欧美激情一级欧美精品| 精品视频在线观看免费观看 | 国产伦精品一区二区三区免费视频| 亚洲国产一区二区三区在线播放| 波多野结衣与黑人| 国产精品综合在线视频| 夫妻性生活毛片| 91精品国产丝袜白色高跟鞋| 免费黄色在线观看| 国产欧美一区二区| 99久久99视频只有精品| 在线观看免费不卡av| 国产精品久久久久桃色tv| 亚洲手机在线观看| 中文字幕视频在线免费欧美日韩综合在线看 | 国产精品av一区二区| 欧美图片自拍偷拍| 亚洲国产精品影院| 手机看片国产1024| 91精品国产精品| 免费成人网www| 日韩欧美黄色大片| 国产精品免费久久| 国产精品欧美激情在线| 九色精品美女在线| 国产精品sss在线观看av| 日日摸日日碰夜夜爽无码| 99在线精品一区二区三区| wwwwww国产| 中国china体内裑精亚洲片| 小说区图片区亚洲| 日韩人妻一区二区三区蜜桃视频| 国产成人在线视频免费播放| 久久久综合久久久| 日韩高清有码在线| 欧美精品高清| 黄瓜视频免费观看在线观看www| 国产精品一二三区在线| 日韩欧美亚洲国产| 国产午夜精品全部视频在线播放| 国产极品一区| 激情五月六月婷婷| 久久欧美一区二区| 国产麻豆一精品一男同| 久久久亚洲网站| 精品久久久久中文字幕小说 | 欧美xxxx综合视频| 大香伊人久久精品一区二区| 日韩 欧美 高清| 1024成人网| 色视频在线观看免费| 国产一区香蕉久久| 亚洲国产精品一区制服丝袜| 欧美三级视频网站| 欧美不卡在线视频| 345成人影院| 亚洲区成人777777精品| 久久影院电视剧免费观看| 国产剧情精品在线| 欧美亚洲视频一区二区| 91综合久久一区二区| 国产亚洲色婷婷久久99精品91| 欧美日免费三级在线| 91超碰在线| 婷婷视频在线播放| 久久综合狠狠综合| 午夜久久久久久久久久| 国产精品激情av在线播放| 激情亚洲网站|