They serve different purposes. If we look at the (simplified) method definition for map:
def map[U](func: (T) ⇒ U): Dataset[U]
expects that given an element of type T, you yield an element of type U, forall T, resulting in a Dataset[U]. In other words, a means of transforming an element of type T to type U.
On the other hand, filter:
def filter(func: (T) ⇒ Boolean): Dataset[T]
expects that given an element of type T, you provide a Boolean value which says if that given element should be yielded back in the resulting Dataset[T] or not (often refereed to as a Predicate).
A concrete example of map can be:
val someDataSet: DataSet[String] = ???
val transformedDataSet: DataSet[Int] = someDataSet.map(str => str.toInt)
And for filter:
val someDataSet: DataSet[String] = ???
val transformedDataSet: DataSet[String] = someDataSet.filter(str => str.length > 5)