【问题标题】:How to drop first row from parquet file?如何从镶木地板文件中删除第一行?
【发布时间】:2019-10-30 19:09:17
【问题描述】:

我有 parquet 文件,其中包含两列(id,feature)。文件由 14348 行组成。file 我如何从文件中删除第一行 id、特征

代码

val df = spark.read.format("parquet").load("file:///usr/local/spark/dataset/model/data/user/part-r-00000-7d55ba81-5761-4e36-b488-7e6214df2a68.snappy.parquet")
val header = df.first() 
val data   = df.filter(row => row != header) 
data .show()

结果似乎是output

【问题讨论】:

    标签: scala apache-spark parquet


    【解决方案1】:

    如果您尝试“忽略”文件中定义的架构,则在您读取文件后隐式完成,使用 spark 如下:

    spark.read.format("parquet").load(your_file)
    

    如果您只想跳过DF 的第一行并且您已经知道id,您可以这样做:val filteredDF = originalDF.filter(s"id != '${excludeID}' ")。如果不知道id,可以用monotonically_increasing_id标记,然后过滤,类似:filter spark dataframe based on maximum value of a column

    【讨论】:

    • 我需要删除行而不是仅加载我的数据。
    • 删除行?意思是从数据源文件中删除?
    【解决方案2】:

    如果您知道,则需要根据 id 删除第一行,否则采用索引方法,即分配行号并删除第一行。

    【讨论】:

    • 更多细节,请。@Ruthika jawar
    • 如果您知道需要删除其行的 id,请转到 df = df.filter("id"===somevalue) 否则您需要为索引列分配行号并删除第一行,然后删除索引列。如果您知道 id 值或想要分配索引列,请告诉我,以便我可以进一步帮助您。
    【解决方案3】:

    我正在使用 Spark 2.4.0,您可以像这样使用 header 选项 来调用 DataFrameReader -

    spark.read.format("csv").option("header", true).load(<path_to_file>)

    DataFrameReader 的其他选项的参考是 here

    【讨论】:

    • 但是错误出现值选项不是org.apache.spark.sql.DataFrame的成员。
    • @SalmaElzeheiry - 上面的spark 变量是SparkSession 类型。调用spark.read 返回类型DataFrameReader
    • 我这样做但是删除了包含 Id 的第二行 .row,特征仍然出现。val df = sqlContext.read.format("parquet").load("file:///usr/local /spark/dataset/model/data/user/part-r-00000-7d55ba81-5761-4e36-b488-7e6214df2a68.snappy.parquet") val skipable_first_row = df.first() val useful_rows = df.filter(row =>行 != skipable_first_row) 有用的行 .show() @Kevin Lawrence
    • IdFeature 是标题。例如,如果您先执行val df = spark.read.format("csv").option("header", true).load(<path_to_file>),然后执行df.show(1),您将看不到'Id` 和Feature - 您将看到数据的第一行!!!!而且它不是sqlContext.read - 对象应该是SparkSession 的一个实例!
    • 请使用.option("header", true) - 从您之前的评论中您没有使用它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    相关资源
    最近更新 更多