自定义分隔符csv阅读器火花

inn*_*neb 17 csv apache-spark pyspark

我想在Apache Spark中读取具有以下结构的文件.

628344092\t20070220\t200702\t2007\t2007.1370
Run Code Online (Sandbox Code Playgroud)

分隔符是\ t.如何在使用spark.read.csv()时实现这一点?

csv太大而无法使用pandas,因为读取此文件需要很长时间.有没有一种方法与之相似

pandas.read_csv(file, sep = '\t')
Run Code Online (Sandbox Code Playgroud)

非常感谢!

T. *_*ęda 30

使用spark.read.option("delimiter", "\t").csv(file)sep代替delimiter.

如果它是字面意思\t,而不是tab特殊字符,请使用double \:spark.read.option("delimiter", "\\t").csv(file)

  • 有没有网站可以查看spark.read的文档或其他内容?感谢你的回答!:) (2认同)
  • CSV 支持是该项目的合并:https://github.com/databricks/spark-csv 它有一些文档。我个人只是检查代码:) (2认同)

Tom*_*Tom 6

这对我有用,而且更清楚(对我来说):正如您所提到的,在 pandas 中您会这样做:

df_pandas = pandas.read_csv(file_path, sep = '\t')
Run Code Online (Sandbox Code Playgroud)

在火花中:

df_spark = spark.read.csv(file_path, sep ='\t', header = True)
Run Code Online (Sandbox Code Playgroud)

请注意,如果 csv 的第一行是列名称,则应设置 header = False,如下所示:

df_spark = spark.read.csv(file_path, sep ='\t', header = False)
Run Code Online (Sandbox Code Playgroud)

您可以更改分隔符 (sep) 以适合您的数据。