Я использую интерфейс Thrift (http://apache.mesi.com.ar//incubator/thrift/0.5.0-incubating/) для доступа к HBase в моем кластере. Я могу подключаться, получать и отображать записи; Использовать даты начала и окончания.
Документация (http://hbase.apache.org/docs/r0.89.20100924/apidocs/org/apache/hadoop/hbase/thrift/doc-files/Hbase.html#Fn_Hbase_scannerOpenWithStop) говорит:
Также можно передать регулярное выражение в квалификаторе столбца.
Мой вопрос прост - Как?
Мой рабочий код:
int scannerId = client.scannerOpenWithStop("TABLE_NAME".ToByteArray(),
"START_ROW".ToByteArray(), "STOP_ROW".ToByteArray(),
new List<string>(){"COLUMN_FAMILY" }.ToByteArrayList());
ToByteArray()
и ToByteArrayList()
- это функции расширения с ... Список, вызывающий ToByteArray для каждой строки, содержимое в списке и т. Д. В случаеМой метод преобразования string-> byte [] может вызвать проблемы.
public static byte[] ToByteArray(this string s)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(s);
}
Когда я запускаю приведенный выше код, он возвращает данные, измененные изменениями в START_ROW
и STOP_ROW
. Если я добавлюдвоеточие (:
) для записи в списке, которая будет COLUMN_FAMILY:
, она все равно возвращает данные. Если я введу полное имя столбца в COLUMN_FAMILY:http://www.myurl.com/more/goes/here
, он получит все значения для этого URL.
То, что я хочу сделать, это иметь COLUMN_FAMILY:http://www.myurl.com/.*
(или другое регулярное выражение) и заставить его возвращать соответствующие данные, как, кажется, документация говорит, что этоп.
Пример или два - все, что мне нужно.Я полагаю, что есть какое-то форматирование или трюк, который мне не хватает, чтобы заставить работать регулярное выражение.