Your first query will effectively have to perform table scans to satisfy what you are asking. If a query requires ALLOW FILTERING to be specified, it means that Cassandra can't really optimise that query in any way and it's going to have to query a lot of data (all of it...) to satisfy the result. Because you've only specified one attribute of the partitioning key, Cassandra doesn't know where to look for that data, and will need to query all of it to find partitions matching that restriction.
If you want to select distinct you should probably do it in a distributed manner using token range scans, however this is generally not a good use case for Cassandra. If you really need to know your partitioning keys you should probably store them in a separate cache.