采集微博数据ETL项目的处理以及相关技术点

中小型数据仓库项目的标准开发流程

以数据流来驱动项目开发

以已下载微博数据ETL项目为例

  1. 基于定的微博数据目录,拿到该目录下所有的输入数据的文件路径。(技术问题done)
  2. 基于文件路径,读取文本文件的数据。
  3. 解析读取出来的文件数据,成为结构化数据-微博博文对象抽象类-ContentPojo,最终获取对应的对象集合。(技术问题done)
  4. 解析读取出来的文件数据,成为结构化数据-用户对象抽象类-UserPojo, 最终获取对应的对象集合。(技术问题done)
  5. 将两个抽象的对象集合,进行文本化数据落地,形成待load到hive的数据文件。
  6. load两个类型的文件数据到hive的两张表当中。(提前创建两张表,均为外表)
  7. 测试数据及查询结果的准确性。

Java操作正则

  1. java对正则的核心抽象
    2.Pattern:模式匹配引擎
  • Pattern.compile(regex)来获Pattern对象

  • Pattern.match(input)来获取matcher对象

    3.Matcher:获取匹配结果

  • Matcher获取数据的3种方式

    • Matches:全部匹配
    • lookingAt:前向匹配
    • find:任意位置匹配均可
    • 取值APi:Matcher.group来获取匹配到的值

正则匹配当中的贪婪匹配规则

  • 当正则表达式匹配到多个输入时,采集贪婪算法,总是拿最后一个、即最长匹配值作为最终的结果

抽象封装的分类

  • 方法抽象或是字段抽象

  • 类抽象

  • 库抽象-log4j,neo4j

  • 组件抽象-spring,ssm,springcloud

  • 子系统抽象-hdfs,mapreduce等更大级别的抽象

如何完成方法或字段抽象

  1. 先写测试类
  2. 确定输入与输出的抽象
    • Input
    • Output
  1. 抽象成方法及其修饰符
  • 方法名称

    • 见名知义如:getMatchContent,getMatchGroupContent,getRegexContent。
  • 是类方法还是成员方法

    • 一个方法解决战斗,不需要依赖外部的成员对象,则使用静态方法。
  • 如果还需要依赖外部成员对象,则必须使用成员方法。

  • 抽象成类

    • 基于方法的功能特性,起一个见名知义、有一定扩展的更高级抽象的名称,比如:RegexUtil

封装分类-按其用途

  • 1、技术型封装-工具类

  • 2、业务型封装-业务管理类

解析特殊情况数据的处理方法

  • 1、经验处理法

  • 2、case by case,one by one

数据分析题目录中的权重打法

    1. 拿出所有的候选因子
    1. 对候选因子,先定性、再定量
      • 定性:定性原则即为物以稀为贵。
      • 定量:目前没有一个比较成熟、公认的搞法,更多是靠业务专家的主观定量后,再进行review来最终确定。可以通过常识验证一下

一般性用户数据分析的分类

  • 活跃度分析
  • 行为特征分析



作者:da9268f7a1bd
链接:https://www.jianshu.com/p/9bdba7661ee3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇:kettle常用功能


下一篇:ETL数据整合与处理——实例