在我的Azure Databricks笔记本,以下代码正确地将以下数据加载到 Azure Apache Spark DataFrame
.
问题:如何跳过 DataFrame
中的第一行- 在数据加载过程中还是在数据加载到数据帧之后?
目标:文件有数百万行需要加载到 SQL 数据库(第一行除外)。文件太大,无法在记事本或 Excel 中打开。该过程最终需要自动化。
.CSV 文件:
HD|20211210
DT|D-|12/22/2017|12/22/2017 09:41:45.828000|11/01/2017|01/29/2018 14:46:10.666000|1.2|1.2|ABC|ABC|123|123|4554|023|11/01/2017|ACDF|First|0012345||f|ABCD|ABCDEFGH|ABCDEFGH||||
DT|D-|12/25/2017|12/25/2017 09:24:20.202000|12/13/2017|01/29/2018 07:52:23.607000|6.4|6.4|ABC|ABC|123|123|4540|002|12/13/2017|ACDF|First|0012345||f|ABC|ABCDEF|ABCDEFGH||||
<强> Code :
sparkDF = spark.read.csv("/FileStore/tables/MyDataFile.csv", header="true", inferSchema="true")
display(sparkDF)
最佳答案
我尝试重现这个问题。我获取了下面的示例 CSV 文件,其第一行完全没有架构。
我为数据框创建了架构。
from pyspark.sql.types import *
customSchema = StructType([
StructField("id", IntegerType(), True),
StructField("name", StringType(), True),
StructField("brandname", StringType(), True),
StructField("num1", IntegerType(), True),
StructField("num2", FloatType(), True),
StructField("num3", FloatType(), True),
StructField("num4", FloatType(), True),
StructField("name1", StringType(), True),
StructField("name2", StringType(), True),
StructField("num5", FloatType(), True)])
现在我将 csv 文件读入数据框。
df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").option("delimiter",",").schema(customSchema).load("/FileStore/tables/PipeSeparated-1.csv")
df.display()
由于架构不匹配,第一行被删除。
关于azure - 将 csv 文件加载到 Azure Databricks 中的 Apache Spark 数据帧时跳过第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70705173/