Database Reference
In-Depth Information
public
int
num_
;
public
float
avg
()
{
return
total_
/
(
float
)
num_
;
}
}
Function
<
Integer
,
AvgCount
>
createAcc
=
new
Function
<
Integer
,
AvgCount
>()
{
public
AvgCount
call
(
Integer
x
)
{
return
new
AvgCount
(
x
,
1
);
}
};
Function2
<
AvgCount
,
Integer
,
AvgCount
>
addAndCount
=
new
Function2
<
AvgCount
,
Integer
,
AvgCount
>()
{
public
AvgCount
call
(
AvgCount
a
,
Integer
x
)
{
a
.
total_
+=
x
;
a
.
num_
+=
1
;
return
a
;
}
};
Function2
<
AvgCount
,
AvgCount
,
AvgCount
>
combine
=
new
Function2
<
AvgCount
,
AvgCount
,
AvgCount
>()
{
public
AvgCount
call
(
AvgCount
a
,
AvgCount
b
)
{
a
.
total_
+=
b
.
total_
;
a
.
num_
+=
b
.
num_
;
return
a
;
}
};
AvgCount
initial
=
new
AvgCount
(
0
,
0
);
JavaPairRDD
<
String
,
AvgCount
>
avgCounts
=
nums
.
combineByKey
(
createAcc
,
addAndCount
,
combine
);
Map
<
String
,
AvgCount
>
countMap
=
avgCounts
.
collectAsMap
();
for
(
Entry
<
String
,
AvgCount
>
entry
:
countMap
.
entrySet
())
{
System
.
out
.
println
(
entry
.
getKey
()
+
":"
+
entry
.
getValue
().
avg
());
}