PySpark -读取CSV并忽略文件头(不使用Pandas)

dddzy1tm  于 2023-01-25  发布在  Spark
关注(0)|答案(2)|浏览(231)

我有个问题希望你能帮我。
文本文件如下所示:

Report Name : 
column1,column2,column3
this is row 1,this is row 2, this is row 3

我正在利用Synapse Notebooks尝试将此文件读入 Dataframe 。如果我尝试使用spark.read.csv()读取csv文件,它会认为列名为“报告名称:“,这显然是不正确的。我知道Pandas csv阅读器有一个'skipRows[1]'函数,但不幸的是,我不能直接用Pandas读取文件,因为我得到了一些奇怪的网络错误。但我可以通过以下方式将PySpark Dataframe 转换为Pandas Dataframe :df.toPandas()我希望能够用直接的PySpark Dataframe 来解决这个问题。
肯定有人遇到过这个问题!救命!
我已经尝试了阅读文件和删除等的每种变化,但在创建第一个 Dataframe 时已经定义了架构,该架构具有1列(报告名称:不知道现在该怎么办。

iqxoj9l9

iqxoj9l91#

从类似问题中复制答案:How to skip lines while reading a CSV file as a dataFrame using PySpark?

import csv
from pyspark.sql.types import StringType

df = sc.textFile("test.csv")\
           .mapPartitions(lambda line: csv.reader(line,delimiter=',', quotechar='"')).filter(lambda line: len(line)>=2 and line[0]!= 'column1')\
           .toDF(['column1','column2','column3'])
klsxnrf1

klsxnrf12#

微软给了我一个有用的答案!当使用panda csv阅读器时,你使用你想要读取的源文件的路径。它需要一个端点到blob存储(不是adls gen 2)。我只有一个端点读取URI中的dfs,而不是blob。在我将端点添加到blob存储后,panda阅读器工作得很好!感谢查看我的帖子。

相关问题