pyspark 将非结构化csv从数据标记blob存储导入数据块

yc0p9oo0  于 2022-11-28  发布在  Spark
关注(0)|答案(1)|浏览(109)

我正在尝试将非结构化csv从datalake存储导入到databricks,我想读取此文件的全部内容:

EdgeMaster                          
Name    Value   Unit    Status  Nom.    Lower   Upper   Description
Type    A                                                  A
Date    1/1/2022                                           B
Time    0:00:00                                            A
X       1       m       OK      1       2       3          B
Y       -                                                  A
                            
EdgeMaster                          
Name    Value   Unit    Status  Nom.    Lower   Upper   Description
Type    B                                                  C
Date    1/1/2022                                           D
Time    0:00:00                                            C
X       1       m       OK      1       2       3          D
Y       -                                                  C
    • 1.方法一:我试着把第一行读成标题**
df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load('abfss://xyz/sample.csv')

我只得到这个:

    • 2.方法二:我跳过了读取标题**

无改进:

    • 3.方法三:已定义自定义模式**

查询未返回结果:

uoifb46i

uoifb46i1#

如果您事先知道架构,则应该可以读取csv文件并删除格式错误的数据。
请看以下示例:
name_age.csv

Hello
name,age
aj,19
Hello
name,age
test,20

读取此代码的代码为:

>>> from pyspark.sql.types import StringType,IntegerType,StructField,StructType
>>> schema=StructType([StructField("name",StringType(),True),StructField("age",IntegerType(),True)])
>>> df=spark.read.csv("name_age.csv",sep=",",mode="DROPMALFORMED",schema=schema)
>>> df.show()
+----+---+
|name|age|
+----+---+
|  aj| 19|
|test| 20|
+----+---+

其他有用链接:Remove first and last row from the text file in pyspark

相关问题