在PYSPARK

时间:2019-02-26 02:44:26

标签: csv apache-spark pyspark apache-spark-sql

我有一个用逗号分隔的文件,没有标题,每行中用逗号分隔的项目数不同,例如:

a, x1, x2  
b, x3, x4, x5  
c, x6, x7, x8, x9  

第一行仅包含3个项目,后续行包含更多项目,因此似乎仅从第一行推断出了列数,因此它跳过了其他行中第三个逗号之后的内容,并且丢失了数据。

spark = init_spark()
df= spark.read.csv(filename)
print (df.take(3))

我得到:

[Row(_c0='a', _c1=' x1', _c2=' x2'),  
Row(_c0='b', _c1=' x3', _c2=' x4'),   
Row(_c0='c', _c1=' x6', _c2=' x7')]  
pyspark.sql.readwriter模块中的

mode =“ PERMISSIVE”
不能解决问题,可能是因为没有标题

1 个答案:

答案 0 :(得分:0)

假设最多不知道由col或逗号分隔的值

schema = StructType([
    StructField("col_a", StringType(), True),
    StructField("col_b", StringType(), True),
    StructField("col_c", StringType(), True),
    StructField("col_d", StringType(), True),
    StructField("col_e", StringType(), True)
])

df = spark.read.csv("a.csv",header=False,schema=schema)

df.show()