连接使用 Append 和 ConcurrentAppend 创建的 ADLS 文件
Joining ADLS files created with Append and ConcurrentAppend
出于性能原因,我们在 Azure Data Lake Store 中有几个大型 CSV 文件是使用 Append method of the .NET API. Recently, we switched over to ConcurrentAppend 创建的。由于 ConcurrentAppend 和 Append 不能互换使用,这个开关要求我们为文件创建一个新的文件夹结构,以确保 ConcurrentAppend 永远不会命中任何使用 Append 创建的文件。
但是,我们的下游应用程序需要加载切换前后的所有数据。我们不想更改我们的应用程序,而是想加入文件(使用 PowerShell SDK Join-AzureRmDataLakeStoreItem cmdlet),但文档没有指定以这种方式加入的文件是否可以在加入后由 ConcurrentAppend 写入。我怀疑我们会遇到问题,因为我们要加入通过这两种方法创建的文件(也许甚至不可能加入?)
所以我的问题如下:
- ConcurrentAppend 能否写入已使用 Join-AzureRmDataLakeStoreItem 加入的文件,即使一个或多个源文件已使用 Append 创建?
- 如果没有,我们将使用U-SQL合并文件,但是ConcurrentAppend可以写入从U-SQL作业输出的文件吗?
- 如果没有,除了执行本地脚本(例如使用 .NET API)之外,我们还有其他选择吗?该脚本将读取所有文件,并将一组新文件写回湖中仅使用 ConcurrentAppend?
成本是一个问题,这就是为什么我们更愿意尽可能使用 PowerShell cmdlet,并希望避免最后一个选项。
目前join操作后,无法对该文件执行追加操作。我们目前正在开发一项功能来消除此限制。但是,目前在连接文件后,追加将不起作用。
出于性能原因,我们在 Azure Data Lake Store 中有几个大型 CSV 文件是使用 Append method of the .NET API. Recently, we switched over to ConcurrentAppend 创建的。由于 ConcurrentAppend 和 Append 不能互换使用,这个开关要求我们为文件创建一个新的文件夹结构,以确保 ConcurrentAppend 永远不会命中任何使用 Append 创建的文件。
但是,我们的下游应用程序需要加载切换前后的所有数据。我们不想更改我们的应用程序,而是想加入文件(使用 PowerShell SDK Join-AzureRmDataLakeStoreItem cmdlet),但文档没有指定以这种方式加入的文件是否可以在加入后由 ConcurrentAppend 写入。我怀疑我们会遇到问题,因为我们要加入通过这两种方法创建的文件(也许甚至不可能加入?)
所以我的问题如下:
- ConcurrentAppend 能否写入已使用 Join-AzureRmDataLakeStoreItem 加入的文件,即使一个或多个源文件已使用 Append 创建?
- 如果没有,我们将使用U-SQL合并文件,但是ConcurrentAppend可以写入从U-SQL作业输出的文件吗?
- 如果没有,除了执行本地脚本(例如使用 .NET API)之外,我们还有其他选择吗?该脚本将读取所有文件,并将一组新文件写回湖中仅使用 ConcurrentAppend?
成本是一个问题,这就是为什么我们更愿意尽可能使用 PowerShell cmdlet,并希望避免最后一个选项。
目前join操作后,无法对该文件执行追加操作。我们目前正在开发一项功能来消除此限制。但是,目前在连接文件后,追加将不起作用。