Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doujutun3207
flink
提交
26fcfeb5
F
flink
项目概览
doujutun3207
/
flink
与 Fork 源项目一致
从无法访问的项目Fork
通知
24
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
flink
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
26fcfeb5
编写于
7月 14, 2014
作者:
Y
Yingjun Wu
提交者:
Stephan Ewen
8月 18, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[streaming] add kafka topology
上级
ee314940
变更
30
隐藏空白更改
内联
并排
Showing
30 changed file
with
1097 addition
and
17 deletion
+1097
-17
flink-addons/flink-streaming/pom.xml
flink-addons/flink-streaming/pom.xml
+6
-1
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/streamcomponent/StreamWindowTask.java
...phere/streaming/api/streamcomponent/StreamWindowTask.java
+3
-3
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeLocal.java
...tosphere/streaming/examples/iterative/IterativeLocal.java
+86
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeParallel.java
...phere/streaming/examples/iterative/IterativeParallel.java
+34
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeSink.java
...atosphere/streaming/examples/iterative/IterativeSink.java
+37
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeSource.java
...osphere/streaming/examples/iterative/IterativeSource.java
+30
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeStateHolder.java
...re/streaming/examples/iterative/IterativeStateHolder.java
+34
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/collaborativefilter/CollaborativeFilteringLocal.java
...tive/collaborativefilter/CollaborativeFilteringLocal.java
+25
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/kmeans/KMeansLocal.java
...here/streaming/examples/iterative/kmeans/KMeansLocal.java
+25
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/pagerank/PagerankLocal.java
.../streaming/examples/iterative/pagerank/PagerankLocal.java
+25
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/sssp/SSSPLocal.java
...tosphere/streaming/examples/iterative/sssp/SSSPLocal.java
+25
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinLocal.java
...va/eu/stratosphere/streaming/examples/join/JoinLocal.java
+86
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinSink.java
...ava/eu/stratosphere/streaming/examples/join/JoinSink.java
+36
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinSourceOne.java
...u/stratosphere/streaming/examples/join/JoinSourceOne.java
+44
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinSourceTwo.java
...u/stratosphere/streaming/examples/join/JoinSourceTwo.java
+44
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinTask.java
...ava/eu/stratosphere/streaming/examples/join/JoinTask.java
+72
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinLocal.java
...phere/streaming/examples/window/join/WindowJoinLocal.java
+86
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinSink.java
...sphere/streaming/examples/window/join/WindowJoinSink.java
+36
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinSourceOne.java
...e/streaming/examples/window/join/WindowJoinSourceOne.java
+47
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinSourceTwo.java
...e/streaming/examples/window/join/WindowJoinSourceTwo.java
+47
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinTask.java
...sphere/streaming/examples/window/join/WindowJoinTask.java
+115
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/sum/WindowSumAggregate.java
...ere/streaming/examples/window/sum/WindowSumAggregate.java
+3
-3
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/sum/WindowSumLocal.java
...osphere/streaming/examples/window/sum/WindowSumLocal.java
+0
-1
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/wordcount/WindowWordCountCounter.java
...ing/examples/window/wordcount/WindowWordCountCounter.java
+3
-3
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/wordcount/WindowWordCountLocal.java
...aming/examples/window/wordcount/WindowWordCountLocal.java
+0
-1
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/kafka/KafkaSource.java
...ain/java/eu/stratosphere/streaming/kafka/KafkaSource.java
+87
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/kafka/KafkaTopology.java
...n/java/eu/stratosphere/streaming/kafka/KafkaTopology.java
+56
-0
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/state/SlidingWindowState.java
...a/eu/stratosphere/streaming/state/SlidingWindowState.java
+2
-2
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/state/SlidingWindowStateIterator.java
...atosphere/streaming/state/SlidingWindowStateIterator.java
+1
-1
flink-addons/flink-streaming/src/test/java/eu/stratosphere/streaming/state/InternalStateTest.java
...va/eu/stratosphere/streaming/state/InternalStateTest.java
+2
-2
未找到文件。
flink-addons/flink-streaming/pom.xml
浏览文件 @
26fcfeb5
...
...
@@ -5,7 +5,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
eu.stratosphere
</groupId>
<version>
0.5
</version>
<version>
0.5
-rc2
</version>
<artifactId>
stratosphere-streaming
</artifactId>
<name>
stratosphere-streaming
</name>
...
...
@@ -83,6 +83,11 @@
<artifactId>
amqp-client
</artifactId>
<version>
3.3.1
</version>
</dependency>
<dependency>
<groupId>
org.apache.kafka
</groupId>
<artifactId>
kafka_2.10
</artifactId>
<version>
0.8.1.1
</version>
</dependency>
</dependencies>
<build>
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/streamcomponent/StreamWindowTask.java
浏览文件 @
26fcfeb5
...
...
@@ -18,7 +18,7 @@ package eu.stratosphere.streaming.api.streamcomponent;
import
eu.stratosphere.streaming.api.invokable.UserTaskInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
import
eu.stratosphere.streaming.state.MutableTableState
;
import
eu.stratosphere.streaming.state.WindowState
;
import
eu.stratosphere.streaming.state.
Sliding
WindowState
;
public
class
StreamWindowTask
extends
UserTaskInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -27,7 +27,7 @@ public class StreamWindowTask extends UserTaskInvokable {
private
int
windowFieldId
=
1
;
private
StreamRecord
tempRecord
;
private
WindowState
<
Integer
>
window
;
private
Sliding
WindowState
<
Integer
>
window
;
private
MutableTableState
<
String
,
Integer
>
sum
;
private
long
initTimestamp
=
-
1
;
private
long
nextTimestamp
=
-
1
;
...
...
@@ -36,7 +36,7 @@ public class StreamWindowTask extends UserTaskInvokable {
int
computeGranularity
,
int
windowFieldId
)
{
this
.
computeGranularity
=
computeGranularity
;
this
.
windowFieldId
=
windowFieldId
;
window
=
new
WindowState
<
Integer
>(
windowSize
,
slidingStep
,
window
=
new
Sliding
WindowState
<
Integer
>(
windowSize
,
slidingStep
,
computeGranularity
);
sum
=
new
MutableTableState
<
String
,
Integer
>();
sum
.
put
(
"sum"
,
0
);
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative
;
import
java.net.InetSocketAddress
;
import
org.apache.log4j.Level
;
import
eu.stratosphere.client.minicluster.NepheleMiniCluster
;
import
eu.stratosphere.client.program.Client
;
import
eu.stratosphere.configuration.Configuration
;
import
eu.stratosphere.nephele.jobgraph.JobGraph
;
import
eu.stratosphere.streaming.api.JobGraphBuilder
;
import
eu.stratosphere.streaming.faulttolerance.FaultToleranceType
;
import
eu.stratosphere.streaming.util.LogUtils
;
public
class
IterativeLocal
{
public
static
JobGraph
getJobGraph
()
{
JobGraphBuilder
graphBuilder
=
new
JobGraphBuilder
(
"testGraph"
,
FaultToleranceType
.
NONE
);
graphBuilder
.
setSource
(
"IterativeSource"
,
IterativeSource
.
class
);
graphBuilder
.
setTask
(
"IterativeParallel"
,
IterativeParallel
.
class
,
1
,
1
);
graphBuilder
.
setTask
(
"IterativeStateHolder"
,
IterativeStateHolder
.
class
);
graphBuilder
.
setSink
(
"IterativeSink"
,
IterativeSink
.
class
);
graphBuilder
.
fieldsConnect
(
"IterativeSource"
,
"IterativeParallel"
,
1
);
graphBuilder
.
fieldsConnect
(
"IterativeParallel"
,
"IterativeStateHolder"
,
1
);
graphBuilder
.
globalConnect
(
"IterativeStateHolder"
,
"IterativeSink"
);
return
graphBuilder
.
getJobGraph
();
}
public
static
void
main
(
String
[]
args
)
{
LogUtils
.
initializeDefaultConsoleLogger
(
Level
.
DEBUG
,
Level
.
INFO
);
try
{
JobGraph
jG
=
getJobGraph
();
Configuration
configuration
=
jG
.
getJobConfiguration
();
if
(
args
.
length
==
0
)
{
args
=
new
String
[]
{
"local"
};
}
if
(
args
[
0
].
equals
(
"local"
))
{
System
.
out
.
println
(
"Running in Local mode"
);
NepheleMiniCluster
exec
=
new
NepheleMiniCluster
();
exec
.
start
();
Client
client
=
new
Client
(
new
InetSocketAddress
(
"localhost"
,
6498
),
configuration
);
client
.
run
(
jG
,
true
);
exec
.
stop
();
}
else
if
(
args
[
0
].
equals
(
"cluster"
))
{
System
.
out
.
println
(
"Running in Cluster2 mode"
);
Client
client
=
new
Client
(
new
InetSocketAddress
(
"hadoop02.ilab.sztaki.hu"
,
6123
),
configuration
);
client
.
run
(
jG
,
true
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeParallel.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative
;
import
eu.stratosphere.streaming.api.invokable.UserTaskInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
IterativeParallel
extends
UserTaskInvokable
{
private
static
final
long
serialVersionUID
=
-
3042489460184024483L
;
public
IterativeParallel
()
{
}
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeSink.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative
;
import
eu.stratosphere.streaming.api.invokable.UserSinkInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
IterativeSink
extends
UserSinkInvokable
{
private
static
final
long
serialVersionUID
=
-
1989637817643875304L
;
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
System
.
out
.
println
(
"received record..."
);
int
tupleNum
=
record
.
getNumOfTuples
();
System
.
out
.
println
(
"============================================"
);
for
(
int
i
=
0
;
i
<
tupleNum
;
++
i
)
{
System
.
out
.
println
(
"name="
+
record
.
getField
(
i
,
0
)
+
", grade="
+
record
.
getField
(
i
,
1
)
+
", salary="
+
record
.
getField
(
i
,
2
));
}
System
.
out
.
println
(
"============================================"
);
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeSource.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative
;
import
eu.stratosphere.streaming.api.invokable.UserSourceInvokable
;
public
class
IterativeSource
extends
UserSourceInvokable
{
private
static
final
long
serialVersionUID
=
8983174839600079890L
;
@Override
public
void
invoke
()
throws
Exception
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/IterativeStateHolder.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative
;
import
eu.stratosphere.streaming.api.invokable.UserTaskInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
IterativeStateHolder
extends
UserTaskInvokable
{
private
static
final
long
serialVersionUID
=
-
3042489460184024483L
;
public
IterativeStateHolder
()
{
}
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/collaborativefilter/CollaborativeFilteringLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative.collaborativefilter
;
public
class
CollaborativeFilteringLocal
{
public
static
void
main
(
String
[]
args
)
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/kmeans/KMeansLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative.kmeans
;
public
class
KMeansLocal
{
public
static
void
main
(
String
[]
args
)
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/pagerank/PagerankLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative.pagerank
;
public
class
PagerankLocal
{
public
static
void
main
(
String
[]
args
)
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/iterative/sssp/SSSPLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.iterative.sssp
;
public
class
SSSPLocal
{
public
static
void
main
(
String
[]
args
)
{
// TODO Auto-generated method stub
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.join
;
import
java.net.InetSocketAddress
;
import
org.apache.log4j.Level
;
import
eu.stratosphere.client.minicluster.NepheleMiniCluster
;
import
eu.stratosphere.client.program.Client
;
import
eu.stratosphere.configuration.Configuration
;
import
eu.stratosphere.nephele.jobgraph.JobGraph
;
import
eu.stratosphere.streaming.api.JobGraphBuilder
;
import
eu.stratosphere.streaming.faulttolerance.FaultToleranceType
;
import
eu.stratosphere.streaming.util.LogUtils
;
public
class
JoinLocal
{
public
static
JobGraph
getJobGraph
()
{
JobGraphBuilder
graphBuilder
=
new
JobGraphBuilder
(
"testGraph"
,
FaultToleranceType
.
NONE
);
graphBuilder
.
setSource
(
"JoinSourceOne"
,
JoinSourceOne
.
class
);
graphBuilder
.
setSource
(
"JoinSourceTwo"
,
JoinSourceTwo
.
class
);
graphBuilder
.
setTask
(
"JoinTask"
,
JoinTask
.
class
,
1
,
1
);
graphBuilder
.
setSink
(
"JoinSink"
,
JoinSink
.
class
);
graphBuilder
.
fieldsConnect
(
"JoinSourceOne"
,
"JoinTask"
,
1
);
graphBuilder
.
fieldsConnect
(
"JoinSourceTwo"
,
"JoinTask"
,
1
);
graphBuilder
.
shuffleConnect
(
"JoinTask"
,
"JoinSink"
);
return
graphBuilder
.
getJobGraph
();
}
public
static
void
main
(
String
[]
args
)
{
LogUtils
.
initializeDefaultConsoleLogger
(
Level
.
DEBUG
,
Level
.
INFO
);
try
{
JobGraph
jG
=
getJobGraph
();
Configuration
configuration
=
jG
.
getJobConfiguration
();
if
(
args
.
length
==
0
)
{
args
=
new
String
[]
{
"local"
};
}
if
(
args
[
0
].
equals
(
"local"
))
{
System
.
out
.
println
(
"Running in Local mode"
);
NepheleMiniCluster
exec
=
new
NepheleMiniCluster
();
exec
.
start
();
Client
client
=
new
Client
(
new
InetSocketAddress
(
"localhost"
,
6498
),
configuration
);
client
.
run
(
jG
,
true
);
exec
.
stop
();
}
else
if
(
args
[
0
].
equals
(
"cluster"
))
{
System
.
out
.
println
(
"Running in Cluster2 mode"
);
Client
client
=
new
Client
(
new
InetSocketAddress
(
"hadoop02.ilab.sztaki.hu"
,
6123
),
configuration
);
client
.
run
(
jG
,
true
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinSink.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.join
;
import
eu.stratosphere.streaming.api.invokable.UserSinkInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
JoinSink
extends
UserSinkInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
System
.
out
.
println
(
"received record..."
);
int
tupleNum
=
record
.
getNumOfTuples
();
System
.
out
.
println
(
"============================================"
);
for
(
int
i
=
0
;
i
<
tupleNum
;
++
i
)
{
System
.
out
.
println
(
"name="
+
record
.
getField
(
i
,
0
)
+
", grade="
+
record
.
getField
(
i
,
1
)
+
", salary="
+
record
.
getField
(
i
,
2
));
}
System
.
out
.
println
(
"============================================"
);
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinSourceOne.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.join
;
import
java.util.Random
;
import
eu.stratosphere.api.java.tuple.Tuple3
;
import
eu.stratosphere.streaming.api.invokable.UserSourceInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
JoinSourceOne
extends
UserSourceInvokable
{
private
static
final
long
serialVersionUID
=
6670933703432267728L
;
private
String
[]
names
=
{
"tom"
,
"jerry"
,
"alice"
,
"bob"
,
"john"
,
"grace"
,
"sasa"
,
"lawrance"
,
"andrew"
,
"jean"
,
"richard"
,
"smith"
,
"gorge"
,
"black"
,
"peter"
};
private
Random
rand
=
new
Random
();
private
StreamRecord
outRecord
=
new
StreamRecord
(
new
Tuple3
<
String
,
String
,
Integer
>());
@Override
public
void
invoke
()
throws
Exception
{
while
(
true
)
{
outRecord
.
setString
(
0
,
"salary"
);
outRecord
.
setString
(
1
,
names
[
rand
.
nextInt
(
names
.
length
)]);
outRecord
.
setInteger
(
2
,
rand
.
nextInt
(
10000
));
emit
(
outRecord
);
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinSourceTwo.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.join
;
import
java.util.Random
;
import
eu.stratosphere.api.java.tuple.Tuple3
;
import
eu.stratosphere.streaming.api.invokable.UserSourceInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
JoinSourceTwo
extends
UserSourceInvokable
{
private
static
final
long
serialVersionUID
=
-
5897483980082089771L
;
private
String
[]
names
=
{
"tom"
,
"jerry"
,
"alice"
,
"bob"
,
"john"
,
"grace"
,
"sasa"
,
"lawrance"
,
"andrew"
,
"jean"
,
"richard"
,
"smith"
,
"gorge"
,
"black"
,
"peter"
};
private
Random
rand
=
new
Random
();
private
StreamRecord
outRecord
=
new
StreamRecord
(
new
Tuple3
<
String
,
String
,
String
>());
@Override
public
void
invoke
()
throws
Exception
{
while
(
true
)
{
outRecord
.
setString
(
0
,
"grade"
);
outRecord
.
setString
(
1
,
names
[
rand
.
nextInt
(
names
.
length
)]);
outRecord
.
setString
(
2
,
String
.
valueOf
((
char
)(
rand
.
nextInt
(
26
)+
'A'
)));
emit
(
outRecord
);
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/join/JoinTask.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.join
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
eu.stratosphere.api.java.tuple.Tuple3
;
import
eu.stratosphere.streaming.api.invokable.UserTaskInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
JoinTask
extends
UserTaskInvokable
{
private
static
final
long
serialVersionUID
=
749913336259789039L
;
private
HashMap
<
String
,
ArrayList
<
String
>>
gradeHashmap
;
private
HashMap
<
String
,
ArrayList
<
Integer
>>
salaryHashmap
;
private
StreamRecord
outRecord
=
new
StreamRecord
(
3
);
public
JoinTask
()
{
gradeHashmap
=
new
HashMap
<
String
,
ArrayList
<
String
>>();
salaryHashmap
=
new
HashMap
<
String
,
ArrayList
<
Integer
>>();
}
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
// TODO Auto-generated method stub
String
streamId
=
record
.
getString
(
0
);
String
name
=
record
.
getString
(
1
);
if
(
streamId
.
equals
(
"grade"
))
{
if
(
salaryHashmap
.
containsKey
(
name
))
{
for
(
Integer
salary
:
salaryHashmap
.
get
(
name
))
{
Tuple3
<
String
,
String
,
Integer
>
outputTuple
=
new
Tuple3
<
String
,
String
,
Integer
>(
name
,
record
.
getString
(
2
),
salary
);
outRecord
.
addTuple
(
outputTuple
);
}
emit
(
outRecord
);
outRecord
.
Clear
();
}
if
(!
gradeHashmap
.
containsKey
(
name
))
{
gradeHashmap
.
put
(
name
,
new
ArrayList
<
String
>());
}
gradeHashmap
.
get
(
name
).
add
(
record
.
getString
(
2
));
}
else
{
if
(
gradeHashmap
.
containsKey
(
name
))
{
for
(
String
grade
:
gradeHashmap
.
get
(
name
))
{
Tuple3
<
String
,
String
,
Integer
>
outputTuple
=
new
Tuple3
<
String
,
String
,
Integer
>(
name
,
grade
,
record
.
getInteger
(
2
));
outRecord
.
addTuple
(
outputTuple
);
}
emit
(
outRecord
);
outRecord
.
Clear
();
}
if
(!
salaryHashmap
.
containsKey
(
name
))
{
salaryHashmap
.
put
(
name
,
new
ArrayList
<
Integer
>());
}
salaryHashmap
.
get
(
name
).
add
(
record
.
getInteger
(
2
));
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinLocal.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.window.join
;
import
java.net.InetSocketAddress
;
import
org.apache.log4j.Level
;
import
eu.stratosphere.client.minicluster.NepheleMiniCluster
;
import
eu.stratosphere.client.program.Client
;
import
eu.stratosphere.configuration.Configuration
;
import
eu.stratosphere.nephele.jobgraph.JobGraph
;
import
eu.stratosphere.streaming.api.JobGraphBuilder
;
import
eu.stratosphere.streaming.faulttolerance.FaultToleranceType
;
import
eu.stratosphere.streaming.util.LogUtils
;
public
class
WindowJoinLocal
{
public
static
JobGraph
getJobGraph
()
{
JobGraphBuilder
graphBuilder
=
new
JobGraphBuilder
(
"testGraph"
,
FaultToleranceType
.
NONE
);
graphBuilder
.
setSource
(
"WindowJoinSourceOne"
,
WindowJoinSourceOne
.
class
);
graphBuilder
.
setSource
(
"WindowJoinSourceTwo"
,
WindowJoinSourceTwo
.
class
);
graphBuilder
.
setTask
(
"WindowJoinTask"
,
WindowJoinTask
.
class
,
1
,
1
);
graphBuilder
.
setSink
(
"WindowJoinSink"
,
WindowJoinSink
.
class
);
graphBuilder
.
fieldsConnect
(
"WindowJoinSourceOne"
,
"WindowJoinTask"
,
1
);
graphBuilder
.
fieldsConnect
(
"WindowJoinSourceTwo"
,
"WindowJoinTask"
,
1
);
graphBuilder
.
shuffleConnect
(
"WindowJoinTask"
,
"WindowJoinSink"
);
return
graphBuilder
.
getJobGraph
();
}
public
static
void
main
(
String
[]
args
)
{
LogUtils
.
initializeDefaultConsoleLogger
(
Level
.
DEBUG
,
Level
.
INFO
);
try
{
JobGraph
jG
=
getJobGraph
();
Configuration
configuration
=
jG
.
getJobConfiguration
();
if
(
args
.
length
==
0
)
{
args
=
new
String
[]
{
"local"
};
}
if
(
args
[
0
].
equals
(
"local"
))
{
System
.
out
.
println
(
"Running in Local mode"
);
NepheleMiniCluster
exec
=
new
NepheleMiniCluster
();
exec
.
start
();
Client
client
=
new
Client
(
new
InetSocketAddress
(
"localhost"
,
6498
),
configuration
);
client
.
run
(
jG
,
true
);
exec
.
stop
();
}
else
if
(
args
[
0
].
equals
(
"cluster"
))
{
System
.
out
.
println
(
"Running in Cluster2 mode"
);
Client
client
=
new
Client
(
new
InetSocketAddress
(
"hadoop02.ilab.sztaki.hu"
,
6123
),
configuration
);
client
.
run
(
jG
,
true
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinSink.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.window.join
;
import
eu.stratosphere.streaming.api.invokable.UserSinkInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
WindowJoinSink
extends
UserSinkInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
System
.
out
.
println
(
"received record..."
);
int
tupleNum
=
record
.
getNumOfTuples
();
System
.
out
.
println
(
"============================================"
);
for
(
int
i
=
0
;
i
<
tupleNum
;
++
i
)
{
System
.
out
.
println
(
"name="
+
record
.
getField
(
i
,
0
)
+
", grade="
+
record
.
getField
(
i
,
1
)
+
", salary="
+
record
.
getField
(
i
,
2
));
}
System
.
out
.
println
(
"============================================"
);
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinSourceOne.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.window.join
;
import
java.util.Random
;
import
eu.stratosphere.api.java.tuple.Tuple4
;
import
eu.stratosphere.streaming.api.invokable.UserSourceInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
WindowJoinSourceOne
extends
UserSourceInvokable
{
private
static
final
long
serialVersionUID
=
6670933703432267728L
;
private
String
[]
names
=
{
"tom"
,
"jerry"
,
"alice"
,
"bob"
,
"john"
,
"grace"
,
"sasa"
,
"lawrance"
,
"andrew"
,
"jean"
,
"richard"
,
"smith"
,
"gorge"
,
"black"
,
"peter"
};
private
Random
rand
=
new
Random
();
private
StreamRecord
outRecord
=
new
StreamRecord
(
new
Tuple4
<
String
,
String
,
Integer
,
Long
>());
private
long
progress
=
0L
;
@Override
public
void
invoke
()
throws
Exception
{
while
(
true
)
{
outRecord
.
setString
(
0
,
"salary"
);
outRecord
.
setString
(
1
,
names
[
rand
.
nextInt
(
names
.
length
)]);
outRecord
.
setInteger
(
2
,
rand
.
nextInt
(
10000
));
outRecord
.
setLong
(
3
,
progress
);
emit
(
outRecord
);
progress
+=
1
;
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinSourceTwo.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.window.join
;
import
java.util.Random
;
import
eu.stratosphere.api.java.tuple.Tuple4
;
import
eu.stratosphere.streaming.api.invokable.UserSourceInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
WindowJoinSourceTwo
extends
UserSourceInvokable
{
private
static
final
long
serialVersionUID
=
-
5897483980082089771L
;
private
String
[]
names
=
{
"tom"
,
"jerry"
,
"alice"
,
"bob"
,
"john"
,
"grace"
,
"sasa"
,
"lawrance"
,
"andrew"
,
"jean"
,
"richard"
,
"smith"
,
"gorge"
,
"black"
,
"peter"
};
private
Random
rand
=
new
Random
();
private
StreamRecord
outRecord
=
new
StreamRecord
(
new
Tuple4
<
String
,
String
,
String
,
Long
>());
private
long
progress
=
0L
;
@Override
public
void
invoke
()
throws
Exception
{
while
(
true
)
{
outRecord
.
setString
(
0
,
"grade"
);
outRecord
.
setString
(
1
,
names
[
rand
.
nextInt
(
names
.
length
)]);
outRecord
.
setString
(
2
,
String
.
valueOf
((
char
)(
rand
.
nextInt
(
26
)+
'A'
)));
outRecord
.
setLong
(
3
,
progress
);
emit
(
outRecord
);
progress
+=
1
;
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/join/WindowJoinTask.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.examples.window.join
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
eu.stratosphere.api.java.tuple.Tuple3
;
import
eu.stratosphere.streaming.api.invokable.UserTaskInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
WindowJoinTask
extends
UserTaskInvokable
{
class
SalaryProgress
{
public
SalaryProgress
(
int
salary
,
long
progress
)
{
this
.
salary
=
salary
;
this
.
progress
=
progress
;
}
int
salary
;
long
progress
;
}
class
GradeProgress
{
public
GradeProgress
(
String
grade
,
long
progress
)
{
this
.
grade
=
grade
;
this
.
progress
=
progress
;
}
String
grade
;
long
progress
;
}
private
static
final
long
serialVersionUID
=
749913336259789039L
;
private
int
windowSize
=
100
;
private
HashMap
<
String
,
LinkedList
<
GradeProgress
>>
gradeHashmap
;
private
HashMap
<
String
,
LinkedList
<
SalaryProgress
>>
salaryHashmap
;
private
StreamRecord
outRecord
=
new
StreamRecord
(
3
);
public
WindowJoinTask
()
{
gradeHashmap
=
new
HashMap
<
String
,
LinkedList
<
GradeProgress
>>();
salaryHashmap
=
new
HashMap
<
String
,
LinkedList
<
SalaryProgress
>>();
}
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
// TODO Auto-generated method stub
String
streamId
=
record
.
getString
(
0
);
String
name
=
record
.
getString
(
1
);
long
progress
=
record
.
getLong
(
3
);
if
(
streamId
.
equals
(
"grade"
))
{
if
(
salaryHashmap
.
containsKey
(
name
))
{
Iterator
<
SalaryProgress
>
iterator
=
salaryHashmap
.
get
(
name
)
.
iterator
();
while
(
iterator
.
hasNext
())
{
SalaryProgress
entry
=
iterator
.
next
();
if
(
progress
-
entry
.
progress
>
windowSize
)
{
iterator
.
remove
();
}
else
{
Tuple3
<
String
,
String
,
Integer
>
outputTuple
=
new
Tuple3
<
String
,
String
,
Integer
>(
name
,
record
.
getString
(
2
),
entry
.
salary
);
outRecord
.
addTuple
(
outputTuple
);
}
}
if
(
outRecord
.
getNumOfTuples
()
!=
0
)
{
emit
(
outRecord
);
}
outRecord
.
Clear
();
}
if
(!
gradeHashmap
.
containsKey
(
name
))
{
gradeHashmap
.
put
(
name
,
new
LinkedList
<
GradeProgress
>());
}
gradeHashmap
.
get
(
name
).
add
(
new
GradeProgress
(
record
.
getString
(
2
),
progress
));
}
else
{
if
(
gradeHashmap
.
containsKey
(
name
))
{
Iterator
<
GradeProgress
>
iterator
=
gradeHashmap
.
get
(
name
)
.
iterator
();
while
(
iterator
.
hasNext
())
{
GradeProgress
entry
=
iterator
.
next
();
if
(
progress
-
entry
.
progress
>
windowSize
)
{
iterator
.
remove
();
}
else
{
Tuple3
<
String
,
String
,
Integer
>
outputTuple
=
new
Tuple3
<
String
,
String
,
Integer
>(
name
,
entry
.
grade
,
record
.
getInteger
(
2
));
outRecord
.
addTuple
(
outputTuple
);
}
}
if
(
outRecord
.
getNumOfTuples
()
!=
0
)
{
emit
(
outRecord
);
}
outRecord
.
Clear
();
}
if
(!
salaryHashmap
.
containsKey
(
name
))
{
salaryHashmap
.
put
(
name
,
new
LinkedList
<
SalaryProgress
>());
}
salaryHashmap
.
get
(
name
).
add
(
new
SalaryProgress
(
record
.
getInteger
(
2
),
progress
));
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/sum/WindowSumAggregate.java
浏览文件 @
26fcfeb5
...
...
@@ -19,7 +19,7 @@ import eu.stratosphere.api.java.tuple.Tuple2;
import
eu.stratosphere.streaming.api.invokable.UserTaskInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
import
eu.stratosphere.streaming.state.MutableTableState
;
import
eu.stratosphere.streaming.state.WindowState
;
import
eu.stratosphere.streaming.state.
Sliding
WindowState
;
public
class
WindowSumAggregate
extends
UserTaskInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -30,7 +30,7 @@ public class WindowSumAggregate extends UserTaskInvokable {
private
int
windowFieldId
=
1
;
private
StreamRecord
tempRecord
;
private
WindowState
<
Integer
>
window
;
private
Sliding
WindowState
<
Integer
>
window
;
private
MutableTableState
<
String
,
Integer
>
sum
;
private
long
initTimestamp
=
-
1
;
private
long
nextTimestamp
=
-
1
;
...
...
@@ -39,7 +39,7 @@ public class WindowSumAggregate extends UserTaskInvokable {
new
Tuple2
<
Integer
,
Long
>());
public
WindowSumAggregate
()
{
window
=
new
WindowState
<
Integer
>(
windowSize
,
slidingStep
,
window
=
new
Sliding
WindowState
<
Integer
>(
windowSize
,
slidingStep
,
computeGranularity
);
sum
=
new
MutableTableState
<
String
,
Integer
>();
sum
.
put
(
"sum"
,
0
);
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/sum/WindowSumLocal.java
浏览文件 @
26fcfeb5
...
...
@@ -26,7 +26,6 @@ import eu.stratosphere.nephele.jobgraph.JobGraph;
import
eu.stratosphere.streaming.api.JobGraphBuilder
;
import
eu.stratosphere.streaming.util.LogUtils
;
//TODO: window operator remains unfinished.
public
class
WindowSumLocal
{
public
static
JobGraph
getJobGraph
()
{
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/wordcount/WindowWordCountCounter.java
浏览文件 @
26fcfeb5
...
...
@@ -21,7 +21,7 @@ import eu.stratosphere.streaming.api.invokable.UserTaskInvokable;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
import
eu.stratosphere.streaming.state.MutableTableState
;
import
eu.stratosphere.streaming.state.MutableTableStateIterator
;
import
eu.stratosphere.streaming.state.WindowState
;
import
eu.stratosphere.streaming.state.
Sliding
WindowState
;
public
class
WindowWordCountCounter
extends
UserTaskInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -32,7 +32,7 @@ public class WindowWordCountCounter extends UserTaskInvokable {
private
int
windowFieldId
=
2
;
private
StreamRecord
tempRecord
;
private
WindowState
<
Integer
>
window
;
private
Sliding
WindowState
<
Integer
>
window
;
private
MutableTableState
<
String
,
Integer
>
wordCounts
;
private
long
initTimestamp
=-
1
;
private
long
nextTimestamp
=-
1
;
...
...
@@ -40,7 +40,7 @@ public class WindowWordCountCounter extends UserTaskInvokable {
private
StreamRecord
outRecord
=
new
StreamRecord
(
3
);
public
WindowWordCountCounter
()
{
window
=
new
WindowState
<
Integer
>(
windowSize
,
slidingStep
,
window
=
new
Sliding
WindowState
<
Integer
>(
windowSize
,
slidingStep
,
computeGranularity
);
wordCounts
=
new
MutableTableState
<
String
,
Integer
>();
}
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/examples/window/wordcount/WindowWordCountLocal.java
浏览文件 @
26fcfeb5
...
...
@@ -27,7 +27,6 @@ import eu.stratosphere.streaming.api.JobGraphBuilder;
import
eu.stratosphere.streaming.faulttolerance.FaultToleranceType
;
import
eu.stratosphere.streaming.util.LogUtils
;
//TODO: window operator remains unfinished.
public
class
WindowWordCountLocal
{
public
static
JobGraph
getJobGraph
()
{
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/kafka/KafkaSource.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.kafka
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Properties
;
import
kafka.consumer.ConsumerConfig
;
import
kafka.consumer.ConsumerIterator
;
import
kafka.consumer.KafkaStream
;
import
kafka.javaapi.consumer.ConsumerConnector
;
import
eu.stratosphere.api.java.tuple.Tuple1
;
import
eu.stratosphere.streaming.api.invokable.UserSourceInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
/**
* Source for reading messages from a Kafka queue. The source currently only
* support string messages. Other types will be added soon.
*
*/
public
class
KafkaSource
extends
UserSourceInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
private
final
String
zkQuorum
;
private
final
String
groupId
;
private
final
String
topicId
;
private
final
int
numThreads
;
private
ConsumerConnector
consumer
;
StreamRecord
record
=
new
StreamRecord
(
new
Tuple1
<
String
>());
public
KafkaSource
(
String
zkQuorum
,
String
groupId
,
String
topicId
,
int
numThreads
)
{
this
.
zkQuorum
=
zkQuorum
;
this
.
groupId
=
groupId
;
this
.
topicId
=
topicId
;
this
.
numThreads
=
numThreads
;
}
private
void
initializeConnection
()
{
Properties
props
=
new
Properties
();
props
.
put
(
"zookeeper.connect"
,
zkQuorum
);
props
.
put
(
"group.id"
,
groupId
);
props
.
put
(
"zookeeper.session.timeout.ms"
,
"400"
);
props
.
put
(
"zookeeper.sync.time.ms"
,
"200"
);
props
.
put
(
"auto.commit.interval.ms"
,
"1000"
);
consumer
=
kafka
.
consumer
.
Consumer
.
createJavaConsumerConnector
(
new
ConsumerConfig
(
props
));
}
@Override
public
void
invoke
()
{
initializeConnection
();
Map
<
String
,
Integer
>
topicCountMap
=
new
HashMap
<
String
,
Integer
>();
topicCountMap
.
put
(
topicId
,
numThreads
);
Map
<
String
,
List
<
KafkaStream
<
byte
[],
byte
[]>>>
consumerMap
=
consumer
.
createMessageStreams
(
topicCountMap
);
KafkaStream
<
byte
[],
byte
[]>
stream
=
consumerMap
.
get
(
topicId
).
get
(
0
);
ConsumerIterator
<
byte
[],
byte
[]>
it
=
stream
.
iterator
();
while
(
it
.
hasNext
())
{
String
message
=
new
String
(
it
.
next
().
message
());
if
(
message
.
equals
(
"q"
))
{
break
;
}
record
.
setString
(
0
,
message
);
emit
(
record
);
}
}
}
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/kafka/KafkaTopology.java
0 → 100644
浏览文件 @
26fcfeb5
/***********************************************************************************************************************
*
* Copyright (C) 2010-2014 by the Stratosphere project (http://stratosphere.eu)
*
* Licensed 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
eu.stratosphere.streaming.kafka
;
import
org.apache.log4j.Level
;
import
eu.stratosphere.nephele.jobgraph.JobGraph
;
import
eu.stratosphere.streaming.api.JobGraphBuilder
;
import
eu.stratosphere.streaming.api.invokable.UserSinkInvokable
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
import
eu.stratosphere.streaming.faulttolerance.FaultToleranceType
;
import
eu.stratosphere.streaming.util.ClusterUtil
;
import
eu.stratosphere.streaming.util.LogUtils
;
public
class
KafkaTopology
{
public
static
class
Sink
extends
UserSinkInvokable
{
private
static
final
long
serialVersionUID
=
1L
;
@Override
public
void
invoke
(
StreamRecord
record
)
throws
Exception
{
System
.
out
.
println
(
record
.
getString
(
0
));
}
}
private
static
JobGraph
getJobGraph
()
{
JobGraphBuilder
graphBuilder
=
new
JobGraphBuilder
(
"RMQ"
,
FaultToleranceType
.
NONE
);
graphBuilder
.
setSource
(
"Source"
,
new
KafkaSource
(
"localhost:7077"
,
"group"
,
"topic"
,
1
),
1
,
1
);
graphBuilder
.
setSink
(
"Sink"
,
new
Sink
(),
1
,
1
);
graphBuilder
.
shuffleConnect
(
"Source"
,
"Sink"
);
return
graphBuilder
.
getJobGraph
();
}
public
static
void
main
(
String
[]
args
)
{
LogUtils
.
initializeDefaultConsoleLogger
(
Level
.
DEBUG
,
Level
.
INFO
);
ClusterUtil
.
runOnMiniCluster
(
getJobGraph
());
}
}
\ No newline at end of file
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/state/WindowState.java
→
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/state/
Sliding
WindowState.java
浏览文件 @
26fcfeb5
...
...
@@ -25,14 +25,14 @@ import eu.stratosphere.streaming.api.streamrecord.StreamRecord;
* compose time based window operator by extending this class by splitting the
* stream into multiple mini batches.
*/
public
class
WindowState
<
K
>
{
public
class
Sliding
WindowState
<
K
>
{
private
int
currentRecordCount
;
private
int
fullRecordCount
;
private
int
slideRecordCount
;
CircularFifoBuffer
buffer
;
public
WindowState
(
int
windowSize
,
int
slidingStep
,
int
computeGranularity
)
{
public
Sliding
WindowState
(
int
windowSize
,
int
slidingStep
,
int
computeGranularity
)
{
this
.
currentRecordCount
=
0
;
// here we assume that windowSize and slidingStep is divisible by
// computeGranularity.
...
...
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/state/WindowStateIterator.java
→
flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/state/
Sliding
WindowStateIterator.java
浏览文件 @
26fcfeb5
...
...
@@ -18,7 +18,7 @@ package eu.stratosphere.streaming.state;
import
eu.stratosphere.api.java.tuple.Tuple2
;
import
eu.stratosphere.streaming.api.streamrecord.StreamRecord
;
public
class
WindowStateIterator
<
K
>{
public
class
Sliding
WindowStateIterator
<
K
>{
public
boolean
hasNext
()
{
// TODO Auto-generated method stub
...
...
flink-addons/flink-streaming/src/test/java/eu/stratosphere/streaming/state/InternalStateTest.java
浏览文件 @
26fcfeb5
...
...
@@ -21,7 +21,7 @@ import eu.stratosphere.api.java.tuple.Tuple2;
import
eu.stratosphere.streaming.state.LogTableState
;
import
eu.stratosphere.streaming.state.MutableTableState
;
import
eu.stratosphere.streaming.state.TableStateIterator
;
import
eu.stratosphere.streaming.state.WindowState
;
import
eu.stratosphere.streaming.state.
Sliding
WindowState
;
public
class
InternalStateTest
{
...
...
@@ -83,7 +83,7 @@ public class InternalStateTest {
@Test
public
void
WindowStateTest
(){
WindowState
<
String
>
state
=
new
WindowState
<
String
>(
100
,
20
,
10
);
SlidingWindowState
<
String
>
state
=
new
Sliding
WindowState
<
String
>(
100
,
20
,
10
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录