[英]Error in U-SQL Job on Azure Data Lake
我的Azure Data Lake帐户中有很多json文件。 它们的组织方式为:存档->文件夹1-> JSON文件。
我想要做的是提取一个特定的字段:每个json的时间戳,然后将其放入一个csv文件中。
我的问题是:
我从以下脚本开始:
CREATE ASSEMBLY IF NOT EXISTS [Newtonsoft.Json] FROM "correct_path/Assemblies/JSON/Newtonsoft.Json.dll";
CREATE ASSEMBLY IF NOT EXISTS [Microsoft.Analytics.Samples.Formats] FROM "correct_path/Assemblies/JSON/Microsoft.Analytics.Samples.Formats.dll";
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
DECLARE @INPUT_FILE string = @"correct_path/Tracking_3e9.json";
//Extract the different properties from the Json file using a JsonExtractor
@json =
EXTRACT Partition string, Custom string
FROM @INPUT_FILE
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
OUTPUT @json
TO "correct_path/Output/simple.csv"
USING Outputters.Csv(quoting : false);
我得到错误:
E_STORE_USER_FILENOTFOUND:找不到文件或访问被拒绝
但是我确实可以访问Azure Data Lake的数据资源管理器中的文件,那怎么可能呢?
尚未找到任何有关此的教程。
谢谢你的帮助。
1)不知道为什么在没有更多信息的情况下就遇到该错误-是您专门丢失输入文件还是程序集?
2)您可以使用文件集从一组文件中提取数据。 只需使用{}来表示输入字符串中的通配符,然后将该字符保存在新列中。 因此,例如,您的输入字符串可能是@“ correct_path / {day} / {hour} / {id} .json”,然后您的extract语句变为:
EXTRACT
column1 string,
column2 string,
day int,
hour int,
id int
FROM @input
3)您必须在SELECT语句中读取整个JSON,但可以将其精简为仅包含将来行集中的所需行。 例如:
@refine=
SELECT timestamp FROM @json;
OUTPUT @refine
...
听起来您的某些JSON数据已嵌套(例如timestamp字段)。 您可以在我们的GitHub( 使用JSON UDF )和此博客中找到有关如何读取嵌套JSON数据的信息。
希望对您有所帮助,如果还有其他问题,请告诉我!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.