Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在不使用usql的情况下从datalake store上的csv文件中删除一行?_Unit Testing_Azure_Azure Data Lake - Fatal编程技术网

Unit testing 如何在不使用usql的情况下从datalake store上的csv文件中删除一行?

Unit testing 如何在不使用usql的情况下从datalake store上的csv文件中删除一行?,unit-testing,azure,azure-data-lake,Unit Testing,Azure,Azure Data Lake,我正在编写一个单元测试,用于将数据附加到datalake上的CSV文件中。我想通过查找附加到同一文件的测试数据来测试它,一旦找到,我想删除插入的行。基本上,一旦我找到了测试数据,我的测试就会通过,但由于测试是在生产环境中运行的,所以我必须搜索我的测试数据,即查找插入到文件中的行,并在测试运行后将其删除 为了避免使用usql所涉及的成本因素,我希望在不使用usql的情况下进行此操作。我们还有什么其他可能的方法可以做到这一点?与其他大数据分析平台一样,ADLA/U-SQL本身不支持附加到文件。您可以

我正在编写一个单元测试,用于将数据附加到datalake上的CSV文件中。我想通过查找附加到同一文件的测试数据来测试它,一旦找到,我想删除插入的行。基本上,一旦我找到了测试数据,我的测试就会通过,但由于测试是在生产环境中运行的,所以我必须搜索我的测试数据,即查找插入到文件中的行,并在测试运行后将其删除


为了避免使用usql所涉及的成本因素,我希望在不使用usql的情况下进行此操作。我们还有什么其他可能的方法可以做到这一点?

与其他大数据分析平台一样,ADLA/U-SQL本身不支持附加到文件。您可以做的是获取一个输入文件,将一些内容附加到其中(例如通过U-SQL),然后将其作为另一个文件写入,例如一个简单的示例:

DECLARE @inputFilepath string = "input/input79.txt";
DECLARE @outputFilepath string = "output/output.txt";


@input =
    EXTRACT col1 int,
            col2 DateTime,
            col3 string
    FROM @inputFilepath
    USING Extractors.Csv(skipFirstNRows : 1);


@output =
    SELECT *
    FROM @input

    UNION ALL

    SELECT *
    FROM(
        VALUES
        (
            2,
            DateTime.Now,
            "some string"
        ) ) AS x (col1, col2, col3);


OUTPUT @output
TO @outputFilepath
USING Outputters.Csv(quoting : false, outputHeader : true);
如果需要进一步控制,可以通过Powershell SDK执行一些操作,例如测试项目是否存在:

Test-AdlStoreItem -Account $adls -Path "/data.csv"
或者使用move AzureRmDataLakeStoreItem移动项目。详情如下:


不能从文件中删除行或任何部分。Azure data lake store是一个仅附加的文件系统。数据一旦提交就无法擦除或更新。如果您在生产环境中进行测试,您的应用程序需要知道测试行并适当地忽略它们

另一种选择是读取U-SQL中的所有行,然后写入不包括测试行的输出