我想用Apache Spark读入一个具有以下结构的文件。
628344092\t20070220\t200702\t2007\t2007.1370
分隔符是\t。我如何在使用spark.read.csv()时实现这一点?这个csv文件太大了,不能用panda,因为要花很长时间才能读到这个文件。有没有类似的方法
pandas.read_csv(file, sep = '\t')
多谢了!
eufgjt7s1#
使用spark.read.option("delimiter", "\t").csv(file)或sep代替delimiter。如果它是\t,而不是制表符特殊字符,则使用两个\:spark.read.option("delimiter", "\\t").csv(file)
spark.read.option("delimiter", "\t").csv(file)
sep
delimiter
\t
\
spark.read.option("delimiter", "\\t").csv(file)
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)以适合您的数据。
bis0qfac3#
如果您使用的是**SparkSQL**,则可以使用以下语法和OPTION语法来指定delimiter。
SparkSQL
OPTION
CREATE TABLE sample_table USING CSV OPTIONS ('delimiter'='\t') AS SELECT ...
SparkSQL Documentation
3条答案
按热度按时间eufgjt7s1#
使用
spark.read.option("delimiter", "\t").csv(file)
或sep
代替delimiter
。如果它是
\t
,而不是制表符特殊字符,则使用两个\
:spark.read.option("delimiter", "\\t").csv(file)
8yparm6h2#
这对我来说很有效,而且(对我来说)更清楚:正如你提到的,在Pandas身上你会做:
在Spark中:
请注意,如果csv的第一行是列名,则应设置header = False,如下所示:
您可以更改分隔符(sep)以适合您的数据。
bis0qfac3#
如果您使用的是**
SparkSQL
**,则可以使用以下语法和OPTION
语法来指定delimiter
。SparkSQL Documentation