2.1 在工程中创建模块 gmall-realtime

image.png

目录 作用
app 产生各层数据的flink任务
bean 数据对象
common 公共常量
utils 工具类

2.2 修改配置文件

2.2.1 配置 pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>gmall2022</artifactId>
  7. <groupId>org.example</groupId>
  8. <version>1.0</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>gmall-realtime</artifactId>
  12. <properties>
  13. <java.version>1.8</java.version>
  14. <maven.compiler.source>${java.version}</maven.compiler.source>
  15. <maven.compiler.target>${java.version}</maven.compiler.target>
  16. <flink.version>1.13.2</flink.version>
  17. <scala.version>2.12</scala.version>
  18. <hadoop.version>3.3.1</hadoop.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.apache.flink</groupId>
  23. <artifactId>flink-java</artifactId>
  24. <version>${flink.version}</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.apache.flink</groupId>
  28. <artifactId>flink-streaming-java_${scala.version}</artifactId>
  29. <version>${flink.version}</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.apache.flink</groupId>
  33. <artifactId>flink-connector-kafka_${scala.version}</artifactId>
  34. <version>${flink.version}</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.apache.flink</groupId>
  38. <artifactId>flink-clients_${scala.version}</artifactId>
  39. <version>${flink.version}</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.apache.flink</groupId>
  43. <artifactId>flink-cep_${scala.version}</artifactId>
  44. <version>${flink.version}</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.apache.flink</groupId>
  48. <artifactId>flink-json</artifactId>
  49. <version>${flink.version}</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>com.alibaba</groupId>
  53. <artifactId>fastjson</artifactId>
  54. <version>1.2.79</version>
  55. </dependency>
  56. <!--如果保存检查点到 hdfs 上,需要引入此依赖-->
  57. <dependency>
  58. <groupId>org.apache.hadoop</groupId>
  59. <artifactId>hadoop-client</artifactId>
  60. <version>${hadoop.version}</version>
  61. </dependency>
  62. <dependency>
  63. <groupId>mysql</groupId>
  64. <artifactId>mysql-connector-java</artifactId>
  65. <version>8.0.21</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>com.alibaba.ververica</groupId>
  69. <artifactId>flink-connector-mysql-cdc</artifactId>
  70. <version>1.2.0</version>
  71. </dependency>
  72. <dependency>
  73. <groupId>org.projectlombok</groupId>
  74. <artifactId>lombok</artifactId>
  75. <version>1.18.16</version>
  76. </dependency>
  77. <!--Flink 默认使用的是 slf4j 记录日志,相当于一个日志的接口,我们这里使用 log4j 作为
  78. 具体的日志实现-->
  79. <dependency>
  80. <groupId>org.slf4j</groupId>
  81. <artifactId>slf4j-api</artifactId>
  82. <version>1.7.25</version>
  83. </dependency>
  84. <dependency>
  85. <groupId>org.slf4j</groupId>
  86. <artifactId>slf4j-log4j12</artifactId>
  87. <version>1.7.25</version>
  88. </dependency>
  89. <dependency>
  90. <groupId>org.apache.logging.log4j</groupId>
  91. <artifactId>log4j-to-slf4j</artifactId>
  92. <version>2.14.0</version>
  93. </dependency>
  94. </dependencies>
  95. <build>
  96. <plugins>
  97. <plugin>
  98. <groupId>org.apache.maven.plugins</groupId>
  99. <artifactId>maven-assembly-plugin</artifactId>
  100. <version>3.0.0</version>
  101. <configuration>
  102. <descriptorRefs>
  103. <descriptorRef>jar-with-dependencies</descriptorRef>
  104. </descriptorRefs>
  105. </configuration>
  106. <executions>
  107. <execution>
  108. <id>make-assembly</id>
  109. <phase>package</phase>
  110. <goals>
  111. <goal>single</goal>
  112. </goals>
  113. </execution>
  114. </executions>
  115. </plugin>
  116. </plugins>
  117. </build>
  118. </project>

2.2.2 在resources下添加 log4j.properties

log4j.rootLogger=error,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n