如何在不使用 sql 的情况下从数据湖存储上的 csv 文件中删除一行?
How to delete a row from csv file on datalake store without using usql?
我正在编写一个单元测试,用于将数据附加到数据湖上的 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 数据湖存储是一个仅附加的文件系统。数据一旦提交就无法擦除或更新。如果您在生产环境中进行测试,您的应用程序需要了解测试行并适当地忽略它们。
另一种选择是读取 U-SQL 中的所有行,然后写入不包括测试行的输出。
我正在编写一个单元测试,用于将数据附加到数据湖上的 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 数据湖存储是一个仅附加的文件系统。数据一旦提交就无法擦除或更新。如果您在生产环境中进行测试,您的应用程序需要了解测试行并适当地忽略它们。
另一种选择是读取 U-SQL 中的所有行,然后写入不包括测试行的输出。