Невозможно удаленно выполнить запрос к таблице Hive в контейнере, отличном от контейнера по умолчанию в HDInsight

Я пытаюсь запустить запрос Hive из .NET, используя Linq to Hive.

Проблема в том, что запрос должен выполняться во внешней таблице, которой нет в контейнере HDInsight по умолчанию, поэтому я добавил учетные данные контейнера в core-site.xml и перезапустил демонов Hive.

Однако я получаю следующую ошибку:

Контейнер ... в учетной записи ... не найден, и мы не можем создать его с использованием анонимных учетных данных.

Вот мой код:

var db = new MyHiveDatabase(
    new Uri("https://myclustername.azurehdinsight.net"),
    username,
    password,
    nonDefaultStorageAccount, nonDefaultStorageAcountKey);
    // I've also tried: defaultStorageAccount, defaultStorageAcountKey


var q = from x in db.ExternalTableName
        group x by x.Name
        into g
        select new {Name = g.Key, Count = g.Count()};

q.ExecuteQuery().Wait();

Соединение устанавливается успешно, и создается задание Hive (я даже вижу файл HQL с запросом), но задание Hive записывает вышеупомянутую ошибку в stderr.

Я пытался решить эту проблему часами, меняя то и это, я даже пробовал WebHCatHttpClient вместо Linq, но безрезультатно ... Есть идеи?


person Ilya Kogan    schedule 01.12.2013    source источник


Ответы (1)


Вы уверены, что таблица Hive создана? Я не знаю причин, но Hive ограничивает создание внешней таблицы только в «локальном» режиме.

Командлет PowerShell invoke-hive можно использовать для выполнения запроса куста, например «выберите количество (*) из» для проверки.

Дополнительные примеры PowerShell или HDInsight .NET SDK см. В разделе http://www.windowsazure.com/en-us/manage/services/hdinsight/submit-hadoop-jobs-programmatically/#hive-sdk.

person Jonathan Gao    schedule 06.12.2013
comment
Таблица была создана непосредственно в кластере с помощью удаленного рабочего стола. И выбор действительно работает именно так. В любом случае, я отказался от этого и переместил все данные в контейнер по умолчанию. - person Ilya Kogan; 07.12.2013