将管道分隔的 txt 文件导入数据块中的 spark 数据帧
Import pipe delimited txt file into spark dataframe in databricks
我有一个保存为 .txt 格式的数据文件,其顶部有一个 header 行,并且是竖线分隔的。我在数据块中工作,需要创建此数据的 spark 数据框,所有列读入为 StringType(),第一行定义的 headers,以及基于管道分隔符分隔的列.
导入 .csv 文件时,我可以设置分隔符和 header 选项。但是,我无法以相同的方式导入 .txt 文件。
示例数据(完全编造)...为方便起见,请想象它只是被称为 datafile.txt:
URN|名称|支持
12233345757777701|花托|是
32313185648456414|戴夫|否
46852554443544854|斯蒂芬|否
如果有人帮助我将其导入到 Spark 数据框中,我将不胜感激,这样我就可以继续分析的其他部分了。谢谢!
任何分隔符分隔的文件都适合使用 csv 读取方法。 csv 的 'c' 主要是约定俗成的。因此,没有什么能阻止我们阅读这篇文章:
col1|col2|col3
0|1|2
1|3|8
像这样(纯 python):
import csv
from pathlib import Path
with Path("pipefile.txt").open() as f:
reader = csv.DictReader(f, delimiter="|")
data = list(reader)
print(data)
因为您的库使用的任何自定义 reader 都可能在幕后使用 csv.reader
,您只需要弄清楚如何将正确的分隔符传递给它。
@blackbishop 在评论中指出
spark.read.csv("datafile.text", header=True, sep="|")
将是合适的火花调用。
我有一个保存为 .txt 格式的数据文件,其顶部有一个 header 行,并且是竖线分隔的。我在数据块中工作,需要创建此数据的 spark 数据框,所有列读入为 StringType(),第一行定义的 headers,以及基于管道分隔符分隔的列.
导入 .csv 文件时,我可以设置分隔符和 header 选项。但是,我无法以相同的方式导入 .txt 文件。
示例数据(完全编造)...为方便起见,请想象它只是被称为 datafile.txt:
URN|名称|支持
12233345757777701|花托|是
32313185648456414|戴夫|否
46852554443544854|斯蒂芬|否
如果有人帮助我将其导入到 Spark 数据框中,我将不胜感激,这样我就可以继续分析的其他部分了。谢谢!
任何分隔符分隔的文件都适合使用 csv 读取方法。 csv 的 'c' 主要是约定俗成的。因此,没有什么能阻止我们阅读这篇文章:
col1|col2|col3
0|1|2
1|3|8
像这样(纯 python):
import csv
from pathlib import Path
with Path("pipefile.txt").open() as f:
reader = csv.DictReader(f, delimiter="|")
data = list(reader)
print(data)
因为您的库使用的任何自定义 reader 都可能在幕后使用 csv.reader
,您只需要弄清楚如何将正确的分隔符传递给它。
@blackbishop 在评论中指出
spark.read.csv("datafile.text", header=True, sep="|")
将是合适的火花调用。