在pyspark2中读取文本文件

在pyspark2中读取文本文件,pyspark,apache-spark-2.2,Pyspark,Apache Spark 2.2,我试图使用python读取spark 2.3中的文本文件,但出现了此错误。 这是文本文件的格式: name marks amar 100 babul 70 ram 98 krish 45 代码: df=spark.read.option(“header”、“true”)\ .option(“分隔符”,“”)\ .选项(“推断模式”、“真”)\ .schema( 结构类型( [ StructField(“名称”,StringType()), StructField(“marks”,Integer

我试图使用python读取spark 2.3中的文本文件,但出现了此错误。 这是文本文件的格式:

name marks
amar 100
babul 70
ram 98
krish 45
代码:

df=spark.read.option(“header”、“true”)\
.option(“分隔符”,“”)\
.选项(“推断模式”、“真”)\
.schema(
结构类型(
[
StructField(“名称”,StringType()),
StructField(“marks”,IntegerType())
]
)
)\
.text(“文件:/home/maria_dev/prac.txt”)
错误:

当我试图将文本文件读入RDD时,它被收集为一列

数据文件应该更改还是应该更改代码?

而不是(只生成单值列)使用
.csv
将文件加载到DF中

>>> df=spark.read.option("header","true")\
    .option("delimiter"," ")\
    .option("inferSchema","true")\
    .schema(
        StructType(
            [
                StructField("Name",StringType()),
                StructField("marks",IntegerType())
            ]
        )
    )\
    .csv('file:///home/maria_dev/prac.txt') 

>>> from pyspark.sql.types import *
>>> df
DataFrame[Name: string, marks: int]
>>> df.show(10,False)
+-----+-----+
|Name |marks|
+-----+-----+
|amar |100  |
|babul|70   |
|ram  |98   |
|krish|45   |
+-----+-----+

感谢您提供有关.csv的信息,但问题在于文本文件中没有使用逗号,正如上面代码部分所述。它只是一个文本文件,用空格区分列值和行换行。@abhishekanand,因为我们在加载csv文件时使用delimiter As”“(空格)选项,所以df dataframe将用空格分隔符从csv文件加载数据。然后在df中有Name,marks列。
>>> df=spark.read.option("header","true")\
    .option("delimiter"," ")\
    .option("inferSchema","true")\
    .schema(
        StructType(
            [
                StructField("Name",StringType()),
                StructField("marks",IntegerType())
            ]
        )
    )\
    .csv('file:///home/maria_dev/prac.txt') 

>>> from pyspark.sql.types import *
>>> df
DataFrame[Name: string, marks: int]
>>> df.show(10,False)
+-----+-----+
|Name |marks|
+-----+-----+
|amar |100  |
|babul|70   |
|ram  |98   |
|krish|45   |
+-----+-----+