Apache Spark Dataframe - 从CSV文件的第n行加载数据

时间:2017-03-26 12:58:32

标签: apache-spark apache-spark-sql spark-dataframe apache-spark-2.0

我想处理一个巨大的订单CSV文件(5GB),文件开头有一些元数据行。 标题列在第4行(以“h”开头)后跟另一个元数据行表示,描述了可选性。数据行以“d”开头,

m,Version,v1.0
m,Type,xx
m,<OtherMetaData>,<...>
h,Col1,Col2,Col3,Col4,Col5,.............,Col100
m,Mandatory,Optional,Optional,...........,Mandatory
d,Val1,Val2,Val3,Val4,Val5,.............,Val100

加载文件时是否可以跳过指定的行数并使用DataSet的“inferSchema”选项?

Dataset<Row> df = spark.read()
            .format("csv")
            .option("header", "true")
            .option("inferSchema", "true")
            .load("\home\user\data\20170326.csv");

或者我是否需要定义两个不同的数据集并使用“except(Dataset other)”来排除要忽略的行的数据集?

1 个答案:

答案 0 :(得分:2)

您可以尝试将"comment"选项设置为"m",有效地告诉csv读者跳过以"m"字符开头的行。

df = spark.read()
          .format("csv")
          .option("header", "true")
          .option("inferSchema", "true")
          .option("comment", "m")
          .load("\home\user\data\20170326.csv")