我正在从Visual Studio中运行Azure数据湖分析中的USQL作业并获得以下脚本错误。我的工作目的是使用Azure blob REST api从Azure blob读取xml文件并提取数据,然后在azure data lake store中生成csv文件。我没有看到任何错误的帮助。任何人都可以帮助我理解这个问题吗?
DIAGNOSTICCODE:223412289
严重性:错误
COMPONENT:JobManager_User
消息来源:用户
ERRORID:VertexRetriedTooMany
消息:顶点重试次数
描述:顶点SV1_Extract [0] [0]重试24次。
决议:不适用
HELPLINK:N / A
DETAILS:Vertex SV1_Extract [0] [0] .v23 {B0AF5C27-21A5-4011-8044-09A4AB0642C4}失败错误:不正确 功能
更新 - 有关我的用例的更多信息:
我正在尝试在我的USQL作业中使用“自定义用户定义的运算符”,因为我认为使用此功能可以轻松解决我的用例。
我的输入CSV文件放在数据湖存储中,其中包含放置在Azure blob上的XML文件的一些值和路径。
在USQL工作中,我正在从CSV(使用USQL)读取XML文件路径,然后从Azure blob存储中读取这些XML文件并提取值(使用c#后面的代码)并将我的输入文件与XML值合并并生成新的CSV Azure数据湖存储中的文件(再次使用USQL)。
更新2
我还尝试使用嵌入了REST API的Windows Azure存储sdk来访问后面的代码中的blob,并在运行作业时遇到以下错误:
"errorId": "E_RUNTIME_USER_UNHANDLED_EXCEPTION_FROM_USER_CODE",
"message": "An unhandled exception from user code has been reported",
"description": "Unhandled exception from user code: \"The remote name could not be resolved: 'xxxxx.blob.core.windows.net'\"\nThe details includes more information including any inner exceptions and the stack trace where the exception was raised.",
"resolution": "Make sure the bug in the user code is fixed.",
"helpLink": "",
"details": "==== Caught exception Microsoft.WindowsAzure.Storage.StorageException\n\n at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)\r\n\n at Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.DownloadRangeToStream(Stream target, Nullable`1 offset, Nullable`1 length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)\r\n\n at USQLAppForLogs.LogTable.GetValuesFromBlob(String bloburi)\r\n\n at USQLAppForLogs.LogTable.Process(IRow input, IUpdatableRow output)\r\n\n at ScopeEngine.SqlIpProcessor<Extract_0_Data0,SV1_Extract_out0>.GetNextRow(SqlIpProcessor<Extract_0_Data0\\,SV1_Extract_out0>* , SV1_Extract_out0* output) in d:\\data\\ccs\\jobs\\f030ffdf-fc4a-4780-aec5-9067dde49e85_v0\\sqlmanaged.h:line 1821\r\n\n at RunAndHandleClrExceptions(function<void __cdecl(void)>* code)\n\n==== Inner exception System.Net.WebException\n\nThe remote name could not be resolved: 'xxxxx.blob.core.windows.net'\n\n at System.Net.HttpWebRequest.GetResponse()\r\n\n at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext)"
请注意,相同的代码在本地工作正常,所以我认为在访问blob的代码中没有任何问题。
答案 0 :(得分:2)
如果顶点因某些系统或用户错误而失败,则通常会出现此错误消息。在这种情况下,错误消息不是很有用(功能不正确)。
您是如何阅读XML文件的?您提到您正在使用Azure Blob REST API。这可能是原因。
如果要从Windows Azure Blob Stores读取文件,可以使用ADLA帐户注册商店(例如,通过Azure门户,在ADLA帐户中可以添加更多商店)。然后你可以使用wasb URI方案。这里有一个例子: https://github.com/MicrosoftBigData/usql/blob/master/Examples/AmbulanceDemos/AmbulanceDemos/1-Ambulance-Unstructured%20Data/1.2-CopyDriversFromWASBToADL.usql
然后,您可以在我们的XML / JSON示例库中使用XML提取器:https://github.com/MicrosoftBigData/usql/tree/master/Examples/DataFormats
使用后,请随时向我发送样品反馈。
如果这不能解决您的问题,请告知我们。
答案 1 :(得分:2)
回答更新的信息。
您的代码在本地工作的原因是本地执行当前不会强制服务的YARN层当前强加的外部调用限制。
YARN图层不允许您的代码通过http或REST调用进行访问。出于安全原因,不允许容器访问外部资源。
所以我的建议是做两件事之一(都需要你将blob商店帐户注册为附加数据源):
编写一个脚本生成脚本(使用U-SQL,Powershell,Python或您喜欢的脚本生成语言),它将在blob存储数据的wasb:URI上使用EXTRACT。
< / LI>如果文件具有相同的模式并根据某种路径模式进行组织,您还可以使用文件集模式来引用一组您不知道确切文件名为apriori的文件。
请注意,U-SQL当前希望能够在编译时解析所有文件名。
我会在无用的错误消息上提出一些错误。如果您想要一个能够让您更灵活地阅读文件的功能,我建议您前往http://aka.ms/adlfeedback以使用用例场景提交请求。这样,其他人可以给出您的建议投票,这有助于我们在规划中优先考虑该功能。