diff --git a/docs/programming-guide.md b/docs/programming-guide.md
index 74d5ee1ca6b3fac7428da150b6f52d75d4da653b..20b4bee0f58e1aade313fd10542c5a0c97b01888 100644
--- a/docs/programming-guide.md
+++ b/docs/programming-guide.md
@@ -1373,7 +1373,7 @@ res2: Long = 10
 {% endhighlight %}
 
 While this code used the built-in support for accumulators of type Long, programmers can also
-create their own types by subclassing [AccumulatorV2](api/scala/index.html#org.apache.spark.AccumulatorV2).
+create their own types by subclassing [AccumulatorV2](api/scala/index.html#org.apache.spark.util.AccumulatorV2).
 The AccumulatorV2 abstract class has several methods which need to override: 
 `reset` for resetting the accumulator to zero, and `add` for add anothor value into the accumulator, `merge` for merging another same-type accumulator into this one. Other methods need to override can refer to scala API document. For example, supposing we had a `MyVector` class
 representing mathematical vectors, we could write: