Well, I don't think that you're going to read a huge amount of data from your database in one go, right? You'll probably want to filter out specific pieces of information that you're interested in, so
you should model those specific pieces of information, and then create another repository interface for a specific type of information.
Let's for a moment assume that you have a big database full of temperature readings over many years. Let's also assume that one of the things that you're interested in is getting all readings between two specified times. Here's what the interface could partially look like:
Just add more methods if you need different ways to filter the data.
You can then have a
HBaseTemperatureReadingRepository implementation class that transforms these method calls to highly performant searching and filtering operations on your HBase driver.
As you can see, you don't need one DAO per database driver, but instead you can separate your code into one repository per data type.