我正在尝试使用linq到配置单元从.net启动配置单元查询。
问题是查询应该在一个外部表上运行,而这个表不在默认的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();
连接成功并创建了一个配置单元作业(我甚至可以看到带有查询的hql文件),但是配置单元作业将上述错误写入stderr。
我已经试着解决这个问题好几个小时了,改变这个和那个,我甚至试过 WebHCatHttpClient
而不是林克,但没有用。。。有什么想法吗?
1条答案
按热度按时间nwsw7zdq1#
是否确定已创建配置单元表?我不知道原因,但是hive限制只在“local”模式下创建外部表。
可以使用invoke-hive-powershell cmdlet运行配置单元查询(如“select count(*)from”)进行验证。
有关更多powershell或hdinsight.net sdk示例,请参阅http://www.windowsazure.com/en-us/manage/services/hdinsight/submit-hadoop-jobs-programmatically/#hive-sdk。