modify
This commit is contained in:
		
							
								
								
									
										276
									
								
								code/Flink/flink-basis-scala/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										276
									
								
								code/Flink/flink-basis-scala/pom.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,276 @@ | ||||
| <!-- | ||||
| Licensed to the Apache Software Foundation (ASF) under one | ||||
| or more contributor license agreements.  See the NOTICE file | ||||
| distributed with this work for additional information | ||||
| regarding copyright ownership.  The ASF licenses this file | ||||
| to you under the Apache License, Version 2.0 (the | ||||
| "License"); you may not use this file except in compliance | ||||
| with the License.  You may obtain a copy of the License at | ||||
|  | ||||
|   http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| Unless required by applicable law or agreed to in writing, | ||||
| software distributed under the License is distributed on an | ||||
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
| KIND, either express or implied.  See the License for the | ||||
| specific language governing permissions and limitations | ||||
| under the License. | ||||
| --> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
|          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| 	<modelVersion>4.0.0</modelVersion> | ||||
|  | ||||
| 	<groupId>com.heibaiying</groupId> | ||||
| 	<artifactId>flink-basis-scala</artifactId> | ||||
| 	<version>1.0</version> | ||||
| 	<packaging>jar</packaging> | ||||
|  | ||||
| 	<name>Flink Quickstart Job</name> | ||||
| 	<url>http://www.myorganization.org</url> | ||||
|  | ||||
| 	<repositories> | ||||
| 		<repository> | ||||
| 			<id>apache.snapshots</id> | ||||
| 			<name>Apache Development Snapshot Repository</name> | ||||
| 			<url>https://repository.apache.org/content/repositories/snapshots/</url> | ||||
| 			<releases> | ||||
| 				<enabled>false</enabled> | ||||
| 			</releases> | ||||
| 			<snapshots> | ||||
| 				<enabled>true</enabled> | ||||
| 			</snapshots> | ||||
| 		</repository> | ||||
| 	</repositories> | ||||
|  | ||||
| 	<properties> | ||||
| 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||
| 		<flink.version>1.9.0</flink.version> | ||||
| 		<scala.binary.version>2.11</scala.binary.version> | ||||
| 		<scala.version>2.11.12</scala.version> | ||||
| 	</properties> | ||||
|  | ||||
| 	<dependencies> | ||||
| 		<!-- Apache Flink dependencies --> | ||||
| 		<!-- These dependencies are provided, because they should not be packaged into the JAR file. --> | ||||
| 		<dependency> | ||||
| 			<groupId>org.apache.flink</groupId> | ||||
| 			<artifactId>flink-scala_${scala.binary.version}</artifactId> | ||||
| 			<version>${flink.version}</version> | ||||
| 			<scope>provided</scope> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<groupId>org.apache.flink</groupId> | ||||
| 			<artifactId>flink-streaming-scala_${scala.binary.version}</artifactId> | ||||
| 			<version>${flink.version}</version> | ||||
| 			<scope>provided</scope> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<!-- Scala Library, provided by Flink as well. --> | ||||
| 		<dependency> | ||||
| 			<groupId>org.scala-lang</groupId> | ||||
| 			<artifactId>scala-library</artifactId> | ||||
| 			<version>${scala.version}</version> | ||||
| 			<scope>provided</scope> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<!-- Add connector dependencies here. They must be in the default scope (compile). --> | ||||
|  | ||||
| 		<!-- Example: | ||||
|  | ||||
| 		<dependency> | ||||
| 			<groupId>org.apache.flink</groupId> | ||||
| 			<artifactId>flink-connector-kafka-0.10_${scala.binary.version}</artifactId> | ||||
| 			<version>${flink.version}</version> | ||||
| 		</dependency> | ||||
| 		--> | ||||
|  | ||||
| 		<!-- Add logging framework, to produce console output when running in the IDE. --> | ||||
| 		<!-- These dependencies are excluded from the application JAR by default. --> | ||||
| 		<dependency> | ||||
| 			<groupId>org.slf4j</groupId> | ||||
| 			<artifactId>slf4j-log4j12</artifactId> | ||||
| 			<version>1.7.7</version> | ||||
| 			<scope>runtime</scope> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<groupId>log4j</groupId> | ||||
| 			<artifactId>log4j</artifactId> | ||||
| 			<version>1.2.17</version> | ||||
| 			<scope>runtime</scope> | ||||
| 		</dependency> | ||||
| 	</dependencies> | ||||
|  | ||||
| 	<build> | ||||
| 		<plugins> | ||||
| 			<!-- We use the maven-shade plugin to create a fat jar that contains all necessary dependencies. --> | ||||
| 			<!-- Change the value of <mainClass>...</mainClass> if your program entry point changes. --> | ||||
| 			<plugin> | ||||
| 				<groupId>org.apache.maven.plugins</groupId> | ||||
| 				<artifactId>maven-shade-plugin</artifactId> | ||||
| 				<version>3.0.0</version> | ||||
| 				<executions> | ||||
| 					<!-- Run shade goal on package phase --> | ||||
| 					<execution> | ||||
| 						<phase>package</phase> | ||||
| 						<goals> | ||||
| 							<goal>shade</goal> | ||||
| 						</goals> | ||||
| 						<configuration> | ||||
| 							<artifactSet> | ||||
| 								<excludes> | ||||
| 									<exclude>org.apache.flink:force-shading</exclude> | ||||
| 									<exclude>com.google.code.findbugs:jsr305</exclude> | ||||
| 									<exclude>org.slf4j:*</exclude> | ||||
| 									<exclude>log4j:*</exclude> | ||||
| 								</excludes> | ||||
| 							</artifactSet> | ||||
| 							<filters> | ||||
| 								<filter> | ||||
| 									<!-- Do not copy the signatures in the META-INF folder. | ||||
| 									Otherwise, this might cause SecurityExceptions when using the JAR. --> | ||||
| 									<artifact>*:*</artifact> | ||||
| 									<excludes> | ||||
| 										<exclude>META-INF/*.SF</exclude> | ||||
| 										<exclude>META-INF/*.DSA</exclude> | ||||
| 										<exclude>META-INF/*.RSA</exclude> | ||||
| 									</excludes> | ||||
| 								</filter> | ||||
| 							</filters> | ||||
| 							<transformers> | ||||
| 								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> | ||||
| 									<mainClass>com.heibaiying.StreamingJob</mainClass> | ||||
| 								</transformer> | ||||
| 							</transformers> | ||||
| 						</configuration> | ||||
| 					</execution> | ||||
| 				</executions> | ||||
| 			</plugin> | ||||
|  | ||||
| 			<!-- Java Compiler --> | ||||
| 			<plugin> | ||||
| 				<groupId>org.apache.maven.plugins</groupId> | ||||
| 				<artifactId>maven-compiler-plugin</artifactId> | ||||
| 				<version>3.1</version> | ||||
| 				<configuration> | ||||
| 					<source>1.8</source> | ||||
| 					<target>1.8</target> | ||||
| 				</configuration> | ||||
| 			</plugin> | ||||
|  | ||||
| 			<!-- Scala Compiler --> | ||||
| 			<plugin> | ||||
| 				<groupId>net.alchim31.maven</groupId> | ||||
| 				<artifactId>scala-maven-plugin</artifactId> | ||||
| 				<version>3.2.2</version> | ||||
| 				<executions> | ||||
| 					<execution> | ||||
| 						<goals> | ||||
| 							<goal>compile</goal> | ||||
| 							<goal>testCompile</goal> | ||||
| 						</goals> | ||||
| 					</execution> | ||||
| 				</executions> | ||||
| 			</plugin> | ||||
|  | ||||
| 			<!-- Eclipse Scala Integration --> | ||||
| 			<plugin> | ||||
| 				<groupId>org.apache.maven.plugins</groupId> | ||||
| 				<artifactId>maven-eclipse-plugin</artifactId> | ||||
| 				<version>2.8</version> | ||||
| 				<configuration> | ||||
| 					<downloadSources>true</downloadSources> | ||||
| 					<projectnatures> | ||||
| 						<projectnature>org.scala-ide.sdt.core.scalanature</projectnature> | ||||
| 						<projectnature>org.eclipse.jdt.core.javanature</projectnature> | ||||
| 					</projectnatures> | ||||
| 					<buildcommands> | ||||
| 						<buildcommand>org.scala-ide.sdt.core.scalabuilder</buildcommand> | ||||
| 					</buildcommands> | ||||
| 					<classpathContainers> | ||||
| 						<classpathContainer>org.scala-ide.sdt.launching.SCALA_CONTAINER</classpathContainer> | ||||
| 						<classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer> | ||||
| 					</classpathContainers> | ||||
| 					<excludes> | ||||
| 						<exclude>org.scala-lang:scala-library</exclude> | ||||
| 						<exclude>org.scala-lang:scala-compiler</exclude> | ||||
| 					</excludes> | ||||
| 					<sourceIncludes> | ||||
| 						<sourceInclude>**/*.scala</sourceInclude> | ||||
| 						<sourceInclude>**/*.java</sourceInclude> | ||||
| 					</sourceIncludes> | ||||
| 				</configuration> | ||||
| 			</plugin> | ||||
| 			<plugin> | ||||
| 				<groupId>org.codehaus.mojo</groupId> | ||||
| 				<artifactId>build-helper-maven-plugin</artifactId> | ||||
| 				<version>1.7</version> | ||||
| 				<executions> | ||||
| 					<!-- Add src/main/scala to eclipse build path --> | ||||
| 					<execution> | ||||
| 						<id>add-source</id> | ||||
| 						<phase>generate-sources</phase> | ||||
| 						<goals> | ||||
| 							<goal>add-source</goal> | ||||
| 						</goals> | ||||
| 						<configuration> | ||||
| 							<sources> | ||||
| 								<source>src/main/scala</source> | ||||
| 							</sources> | ||||
| 						</configuration> | ||||
| 					</execution> | ||||
| 					<!-- Add src/test/scala to eclipse build path --> | ||||
| 					<execution> | ||||
| 						<id>add-test-source</id> | ||||
| 						<phase>generate-test-sources</phase> | ||||
| 						<goals> | ||||
| 							<goal>add-test-source</goal> | ||||
| 						</goals> | ||||
| 						<configuration> | ||||
| 							<sources> | ||||
| 								<source>src/test/scala</source> | ||||
| 							</sources> | ||||
| 						</configuration> | ||||
| 					</execution> | ||||
| 				</executions> | ||||
| 			</plugin> | ||||
| 		</plugins> | ||||
| 	</build> | ||||
|  | ||||
| 	<!-- This profile helps to make things run out of the box in IntelliJ --> | ||||
| 	<!-- Its adds Flink's core classes to the runtime class path. --> | ||||
| 	<!-- Otherwise they are missing in IntelliJ, because the dependency is 'provided' --> | ||||
| 	<profiles> | ||||
| 		<profile> | ||||
| 			<id>add-dependencies-for-IDEA</id> | ||||
|  | ||||
| 			<activation> | ||||
| 				<property> | ||||
| 					<name>idea.version</name> | ||||
| 				</property> | ||||
| 			</activation> | ||||
|  | ||||
| 			<dependencies> | ||||
| 				<dependency> | ||||
| 					<groupId>org.apache.flink</groupId> | ||||
| 					<artifactId>flink-scala_${scala.binary.version}</artifactId> | ||||
| 					<version>${flink.version}</version> | ||||
| 					<scope>compile</scope> | ||||
| 				</dependency> | ||||
| 				<dependency> | ||||
| 					<groupId>org.apache.flink</groupId> | ||||
| 					<artifactId>flink-streaming-scala_${scala.binary.version}</artifactId> | ||||
| 					<version>${flink.version}</version> | ||||
| 					<scope>compile</scope> | ||||
| 				</dependency> | ||||
| 				<dependency> | ||||
| 					<groupId>org.scala-lang</groupId> | ||||
| 					<artifactId>scala-library</artifactId> | ||||
| 					<version>${scala.version}</version> | ||||
| 					<scope>compile</scope> | ||||
| 				</dependency> | ||||
| 			</dependencies> | ||||
| 		</profile> | ||||
| 	</profiles> | ||||
|  | ||||
| </project> | ||||
| @@ -0,0 +1,23 @@ | ||||
| ################################################################################ | ||||
| #  Licensed to the Apache Software Foundation (ASF) under one | ||||
| #  or more contributor license agreements.  See the NOTICE file | ||||
| #  distributed with this work for additional information | ||||
| #  regarding copyright ownership.  The ASF licenses this file | ||||
| #  to you under the Apache License, Version 2.0 (the | ||||
| #  "License"); you may not use this file except in compliance | ||||
| #  with the License.  You may obtain a copy of the License at | ||||
| # | ||||
| #      http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| #  Unless required by applicable law or agreed to in writing, software | ||||
| #  distributed under the License is distributed on an "AS IS" BASIS, | ||||
| #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| #  See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| ################################################################################ | ||||
|  | ||||
| log4j.rootLogger=INFO, console | ||||
|  | ||||
| log4j.appender.console=org.apache.log4j.ConsoleAppender | ||||
| log4j.appender.console.layout=org.apache.log4j.PatternLayout | ||||
| log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %-60c %x - %m%n | ||||
| @@ -0,0 +1,4 @@ | ||||
| a,a,a,a,a | ||||
| b,b,b | ||||
| c,c | ||||
| d,d | ||||
| @@ -0,0 +1,66 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
|  | ||||
| package com.heibaiying | ||||
|  | ||||
| import org.apache.flink.api.scala._ | ||||
|  | ||||
| /** | ||||
|  * Skeleton for a Flink Batch Job. | ||||
|  * | ||||
|  * For a tutorial how to write a Flink batch application, check the | ||||
|  * tutorials and examples on the <a href="http://flink.apache.org/docs/stable/">Flink Website</a>. | ||||
|  * | ||||
|  * To package your application into a JAR file for execution, | ||||
|  * change the main class in the POM.xml file to this class (simply search for 'mainClass') | ||||
|  * and run 'mvn clean package' on the command line. | ||||
|  */ | ||||
| object BatchJob { | ||||
|  | ||||
|   def main(args: Array[String]) { | ||||
|     // set up the batch execution environment | ||||
|     val env = ExecutionEnvironment.getExecutionEnvironment | ||||
|  | ||||
|     /* | ||||
|      * Here, you can start creating your execution plan for Flink. | ||||
|      * | ||||
|      * Start with getting some data from the environment, like | ||||
|      *  env.readTextFile(textPath); | ||||
|      * | ||||
|      * then, transform the resulting DataSet[String] using operations | ||||
|      * like | ||||
|      *   .filter() | ||||
|      *   .flatMap() | ||||
|      *   .join() | ||||
|      *   .group() | ||||
|      * | ||||
|      * and many more. | ||||
|      * Have a look at the programming guide: | ||||
|      * | ||||
|      * http://flink.apache.org/docs/latest/apis/batch/index.html | ||||
|      * | ||||
|      * and the examples | ||||
|      * | ||||
|      * http://flink.apache.org/docs/latest/apis/batch/examples.html | ||||
|      * | ||||
|      */ | ||||
|  | ||||
|     // execute program | ||||
|     env.execute("Flink Batch Scala API Skeleton") | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,63 @@ | ||||
| /* | ||||
|  * Licensed to the Apache Software Foundation (ASF) under one | ||||
|  * or more contributor license agreements.  See the NOTICE file | ||||
|  * distributed with this work for additional information | ||||
|  * regarding copyright ownership.  The ASF licenses this file | ||||
|  * to you under the Apache License, Version 2.0 (the | ||||
|  * "License"); you may not use this file except in compliance | ||||
|  * with the License.  You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
|  | ||||
| package com.heibaiying | ||||
|  | ||||
| import org.apache.flink.streaming.api.scala._ | ||||
|  | ||||
| /** | ||||
|  * Skeleton for a Flink Streaming Job. | ||||
|  * | ||||
|  * For a tutorial how to write a Flink streaming application, check the | ||||
|  * tutorials and examples on the <a href="http://flink.apache.org/docs/stable/">Flink Website</a>. | ||||
|  * | ||||
|  * To package your application into a JAR file for execution, run | ||||
|  * 'mvn clean package' on the command line. | ||||
|  * | ||||
|  * If you change the name of the main class (with the public static void main(String[] args)) | ||||
|  * method, change the respective entry in the POM.xml file (simply search for 'mainClass'). | ||||
|  */ | ||||
| object StreamingJob { | ||||
|   def main(args: Array[String]) { | ||||
|     // set up the streaming execution environment | ||||
|     val env = StreamExecutionEnvironment.getExecutionEnvironment | ||||
|  | ||||
|     /* | ||||
|      * Here, you can start creating your execution plan for Flink. | ||||
|      * | ||||
|      * Start with getting some data from the environment, like | ||||
|      *  env.readTextFile(textPath); | ||||
|      * | ||||
|      * then, transform the resulting DataStream[String] using operations | ||||
|      * like | ||||
|      *   .filter() | ||||
|      *   .flatMap() | ||||
|      *   .join() | ||||
|      *   .group() | ||||
|      * | ||||
|      * and many more. | ||||
|      * Have a look at the programming guide: | ||||
|      * | ||||
|      * http://flink.apache.org/docs/latest/apis/streaming/index.html | ||||
|      * | ||||
|      */ | ||||
|  | ||||
|     // execute program | ||||
|     env.execute("Flink Streaming Scala API Skeleton") | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,13 @@ | ||||
| package com.heibaiying | ||||
|  | ||||
| import org.apache.flink.api.scala._ | ||||
|  | ||||
| object WordCountBatch { | ||||
|  | ||||
|   def main(args: Array[String]): Unit = { | ||||
|     val benv = ExecutionEnvironment.getExecutionEnvironment | ||||
|     val text = benv.readTextFile("D:\\BigData-Notes\\code\\Flink\\flink-basis-scala\\src\\main\\resources\\wordcount.txt") | ||||
|     val counts = text.flatMap { _.toLowerCase.split(",") filter { _.nonEmpty } }.map { (_, 1) }.groupBy(0).sum(1) | ||||
|     counts.print() | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,25 @@ | ||||
| package com.heibaiying | ||||
|  | ||||
| import org.apache.flink.streaming.api.scala._ | ||||
| import org.apache.flink.streaming.api.windowing.time.Time | ||||
|  | ||||
|  | ||||
| object WordCountStreaming { | ||||
|  | ||||
|   def main(args: Array[String]): Unit = { | ||||
|  | ||||
|     val senv = StreamExecutionEnvironment.getExecutionEnvironment | ||||
|  | ||||
|     val text: DataStream[String] = senv.socketTextStream("192.168.200.229", 9999, '\n') | ||||
|     val windowCounts = text.flatMap { w => w.split(",") }.map { w => WordWithCount(w, 1) }.keyBy("word") | ||||
|       .timeWindow(Time.seconds(5)).sum("count") | ||||
|  | ||||
|     windowCounts.print().setParallelism(1) | ||||
|  | ||||
|     senv.execute("Streaming WordCount") | ||||
|  | ||||
|   } | ||||
|  | ||||
|   case class WordWithCount(word: String, count: Long) | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user