gpt4 book ai didi

c# - 从C#中的Hive流脚本访问文件(HDInsight)

转载 作者:行者123 更新时间:2023-12-02 21:53:21 24 4
gpt4 key购买 nike

我正在使用Hive流作业来处理HDInsight上C#中的某些数据。为了处理数据,脚本必须读取存储为Azure上的Blob的xml文件,如下所示:

        OperationContext oc = new OperationContext();
CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials(asvAccount, asvKey), true);
CloudBlobClient client = account.CreateCloudBlobClient();
CloudBlobContainer container = client.GetContainerReference("myContainer");
CloudBlockBlob blob = container.GetBlockBlobReference("file/f.xml");
MemoryStream stream;
using (stream = new MemoryStream())
{
blob.DownloadToStream(stream);
stream.Seek(0, SeekOrigin.Begin);
string reader = new StreamReader(stream).ReadToEnd();
elem = XElement.Parse(reader);
return elem;
}

该代码在我的本地计算机上起作用:它从存储帐户中读取文件并正确返回elem,但是当我尝试在群集上运行该文件时,即使我通过添加该文件,也无法找到Microsoft.WindowsAzure.Storage.dll。 fs.put()到/ Hive / Resources /,然后在配置单元门户中执行“添加文件”。

如果我尝试像这样访问文件:
XElement.Load("hdinsighttesting.blob.core.windows.net/repexdeema/pr/productGuidMapping.xml");

要么
XElement.Load("asv://myContainer@myCluster.blob.core.windows.net/file/f.xml"); then I get the following error: 

Could not find a part of the path 'c:\hdfs\mapred\local\taskTracker\admin\jobcache\job_201307200714_0079\attempt_201307200714_0079_m_000000_0\work\storageAccount.blob.core.windows.net\myContainer\pr\productGuidMapping.xml

我不明白为什么它坚持要在该目录中查找而不是直接进入blob存储。我尝试去那个目录,但是它不存在。

我还考虑过使用LocalResource,但是在我的情况下这是不可能的,因为Hive拒绝查找我要上传到hdfs中的dll文件。

谢谢

最佳答案

“添加文件”应该足够。它将dll复制到工作文件夹中,并且应该可用于您的脚本。 Microsoft.WindowsAzure.Storage.dll具有自己的依赖性。我相信OData.dll和edm.dll。确保添加文件的所有依赖项,否则将无法加载。

关于c# - 从C#中的Hive流脚本访问文件(HDInsight),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com