The code you wrote is very very slow. First off scan works sequentially (no map/reduce) so that is slow to begin with. Then you use two slow filters one that looks at column names that and the worse filter that actually looks at values. - what you get is one by one sequential read that examines each each column and value for matching columns)
If you expect to run queries like these on a regular basis you should rethink your key. Also re do this as a map/reduce job, so at least it will divide the work