pyspark 自定义分隔符csv阅读器spark

xmjla07d  于 2022-11-21  发布在  Spark
关注(0)|答案(3)|浏览(180)

我想用Apache Spark读入一个具有以下结构的文件。

628344092\t20070220\t200702\t2007\t2007.1370

分隔符是\t。我如何在使用spark.read.csv()时实现这一点?
这个csv文件太大了,不能用panda,因为要花很长时间才能读到这个文件。有没有类似的方法

pandas.read_csv(file, sep = '\t')

多谢了!

eufgjt7s

eufgjt7s1#

使用spark.read.option("delimiter", "\t").csv(file)sep代替delimiter
如果它是\t,而不是制表符特殊字符,则使用两个\spark.read.option("delimiter", "\\t").csv(file)

8yparm6h

8yparm6h2#

这对我来说很有效,而且(对我来说)更清楚:正如你提到的,在Pandas身上你会做:

df_pandas = pandas.read_csv(file_path, sep = '\t')

在Spark中:

df_spark = spark.read.csv(file_path, sep ='\t', header = True)

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

df_spark = spark.read.csv(file_path, sep ='\t', header = False)

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

bis0qfac

bis0qfac3#

如果您使用的是**SparkSQL**,则可以使用以下语法和OPTION语法来指定delimiter

CREATE TABLE sample_table
USING CSV
OPTIONS ('delimiter'='\t')
AS SELECT ...

SparkSQL Documentation

相关问题