繁体   English   中英

Azure数据湖上的U-SQL作业中的错误

[英]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);
  1. 我得到错误:

    E_STORE_USER_FILENOTFOUND:找不到文件或访问被拒绝

但是我确实可以访问Azure Data Lake的数据资源管理器中的文件,那怎么可能呢?

  1. 我不想为每个文件一个接一个地运行它。 我只想将所有文件都放在一个文件夹(如Tracking * .json)或一堆文件夹(如Folder *)中,它应该通过它们并将每个文件的输出放在输出的单行中CSV。

尚未找到任何有关此的教程。

  1. 现在,我正在阅读整个json,如何只读取一个字段,例如时间戳,它是特定字段中的一个字段,例如data:{timestamp:“ xxx”}?

谢谢你的帮助。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM