【问题标题】:Remove end of Line Comma from a Azure data lake store File从 Azure 数据湖存储文件中删除行尾逗号
【发布时间】:2018-11-28 07:38:34
【问题描述】:

我需要一些关于使用 Power Shell 在 Azure 数据湖存储中处理文件的输入。

我的 ADLS Gen 1 帐户中有一个以竖线分隔的输入文件。

文件内容如下所示

1|2|3|a,b,
3|4|5|d,h,

我可以使用以下代码在本地 PC 中使用 powershell 删除最后一个逗号

Get-Content $file_name | ForEach-Object {$_.TrimEnd(",")  } 

但是,当我对 Azure Data Lake Storage Gen 1 Account 中的同一个文件运行相同的查询时,数据没有任何反应。我使用的代码是

Get-AzureRmDataLakeStoreItemContent -Account $accountName -Path $myrootdir/path/test.csv| ForEach-Object {$_.TrimEnd( ",")  }

我的一个观察是 ForEach-Object 只返回一次。也就是说,如果我在 ForEach-Object 循环中打印 hello 它只打印一个。但是我通过运行 -Head 和 -Tail 命令验证了没有换行问题。我附上了相同的屏幕截图。

您能帮我理解我在这里做错了什么以及删除每行中最后一个逗号的任何替代方法吗?

【问题讨论】:

标签: azure powershell azure-data-lake


【解决方案1】:

我不认为你可以直接通过 powershell 修改商店项目。

Get-AzureRmDataLakeStoreItemContent 只是获取内容。 (根据我的经验,如果它允许你这样做,它应该是一个类似Set-AzureRmDataLakeStoreItemContentUpdate-AzureRmDataLakeStoreItemContent 的命令)

解决方法是export the file -> 在本地修改 -> 再次import it

更新

如果我没有误解您的问题,请尝试以下命令。

((Get-AzureRmDataLakeStoreItemContent -AccountName "joydatalake1" -Path "/sss/test.csv").ToString() -split("`r")).Trim() | ForEach-Object {$_.TrimEnd(",")}

【讨论】:

  • 嗨,乔伊,感谢您的 cmets。如果你看到我的代码,我没有尝试写任何内容,因为我需要先操作我的数据。我的想法是将 Get-AzureRmDataLakeStoreItemContent 的输出传递给我认为是 Set-AzureRmDataLakeStoreItemContent 的对象。但是这里的问题出现在文件操作本身的第一部分。导出和导入的工作不是一个实用的解决方案,因为这需要成为自动化工作流程的一部分。
  • 嗨,Joy,谢谢您的建议,它奏效了。我已经接受了解决方案。如果您愿意添加一些解释,那将非常有帮助。
  • @NaveenVenugopal 命令的输出只有一个对象,所以如果你使用foreach-object,它只会删除最后一个逗号。在本地,输出是两个对象。
  • 乔伊是对的。使用Get-AzureRmDataLakeStoreItemContent时返回一个字符串,只能迭代一次(get-content返回数组,所以可以迭代其中的所有项)。
  • @JoyWang@IvanYang 为另一个问题道歉。当我将命令的输出传递给变量并将其传递给 NewAzureRmDataLakeStoreItem 时,我收到错误“传入的内容无效”。关于如何使其工作的任何输入。 $data= 你的命令 $data.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System. Array > New-AzureRmDataLakeStoreItem -Account $account -path $myrootdir/test_output.txt -Value $data 传入的内容无效。仅支持byte[]和string内容。
猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 2020-12-08
  • 2021-01-25
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
相关资源
最近更新 更多