场景
我有一个源文件,其中每行上都包含JSON块。
然后,我得到一个简单的U-SQL摘录,如下所示,其中[RawString]代表文件中的每个新行,而[FileName]被定义为@SourceFile路径中的变量。
@BaseExtract =
EXTRACT
[RawString] string,
[FileName] string
FROM
@SourceFile
USING
Extractors.Text(delimiter:'\b', quoting : false);
这对我的大多数数据都执行成功,而且我可以在脚本中进一步解析[RawString]作为JSON,没有任何问题。
但是,我似乎在最近的文件中有一排额外的数据无法提取。
错误
在Visual Studio中本地执行此操作,并在Azure中针对我的Data Lake Analytics服务执行此操作,我得到以下信息。
E_RUNTIME_USER_EXTRACT_COLUMN_CONVERSION_TOO_LONG
尝试转换列数据时,值太长失败。
无法将字符串转换为正确的类型。结果数据长度为
太长。
请参阅下面的屏幕截图。
使用其他工具进行检查后,我可以确认源文件中最长行的长度为 189,943个字符。
问题
所以我对你的问题我的朋友们...
其他事物
还有其他一些想法...
预先感谢您对此的支持。
最佳答案
列中U-SQL字符串值的限制当前为128kB(请参阅https://msdn.microsoft.com/en-us/library/azure/mt764129.aspx)。
根据我的经验,很多人都在使用它(尤其是在处理JSON时)。有几种解决方法:
我们正在考虑增加字符串大小,但是如果您可以在http://aka.ms/adlfeedback上提交/表决请求,那将会很有帮助。