2

我有一个文件位于 Azure Data Lake gen 2 文件系统中。我想读取文件的内容并进行一些低级别的更改,即从记录中的几个字段中删除几个字符。更明确地说 - 有些字段也有最后一个字符作为反斜杠 ('\')。并且由于该值包含在文本限定符 ("") 中,因此字段值会转义 '"' 字符并继续包含下一个字段的值作为当前字段的值。

例如,文本文件包含以下 2 条记录(忽略标题)

-------------------------------------------------------------------
Name          | Address      | Description            | Remark
-------------------------------------------------------------------
"ABC"         | "UK"      | "descrption 1"            | "remark1"

"DEF"         | "USA"     | "description2\"           | "remark2"

当我在 pyspark 数据框中阅读上述内容时,它会读取如下内容:

-------------------------------------------------------------------
Name          | Address      | Description            | Remark
-------------------------------------------------------------------
"ABC"         | "UK"      | "descrption 1"            | "remark1"

"DEF"         | "USA"     | "description2|remark2"    | null      

因此,我的目标是使用 python 中的常用文件处理来读取上述文件,例如以下文件,并为那些具有该字符的记录删除“\”字符并将行写回新文件。

f = open("test.txt",'r',encoding = 'utf-8')
//read the lines
//remove the '\' character 
//write the line back

但由于该文件位于 ADLS gen 2 文件系统(类似 HDFS 的文件系统)中,因此通常的 python 文件处理在这里不起作用。ADLS gen 2 文件系统文件处理的出路是什么?

或者有没有办法使用火花数据框 API 来解决这个问题?

4

2 回答 2

2

Databricks 文档在此处提供有关处理与 ADLS 的连接的信息。根据您的环境的详细信息和您尝试执行的操作,有几个可用选项。对于我们的团队,我们安装了 ADLS 容器,以便一次性设置,之后,在 Databricks 中工作的任何人都可以轻松访问它。

于 2020-05-08T14:08:35.713 回答
0

为需要读取的文件生成 SAS。

source ='SAS URL with Token'
f = open("source",'r',encoding = 'utf-8')

参考: https ://medium.com/@meetcpatel906/read-csv-file-from-azure-blob-storage-to-directly-to-data-frame-using-python-83d34c4cbe57

于 2020-07-27T19:56:22.550 回答