【问题标题】:Preserve the order of the Spark Dataframe when converting to libsvm转换为 libsvm 时保留 Spark Dataframe 的顺序
【发布时间】:2020-12-21 18:44:44
【问题描述】:

我们知道Spark Dataframe order的顺序在保存到storage的时候会丢失 例如,假设我们有一个包含 3 列的 Spark 数据框

+--------+-----+---+
|feature |label| id|
+--------+-----+---+
| ...    | ... |...|
+--------+-----+---+

我们可以使用以下方法将数据帧保存为 libsvm:

df.select("label", "feature").write.mode("overwrite").format("libsvm").save(some_path)

但是,在转换为 libsvm 后,我们丢失了 id 列。

问题:我们如何在 libsvm 中找到 id 的数据?

【问题讨论】:

    标签: python apache-spark libsvm


    【解决方案1】:

    您丢失了 id 列,因为您选择了一部分列。

    如果您想插入整个 DataFrame,请使用:

    df.write.mode("overwrite").format("libsvm").save(some_path)
    

    如果您只想要这 3 列,请使用:

    df.select("label", "feature", "id").write.mode("overwrite").format("libsvm").save(some_path)
    

    https://spark.apache.org/docs/latest/api/scala/org/apache/spark/sql/Dataset.html#select(cols:org.apache.spark.sql.Column*):org.apache.spark.sql.DataFrame

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2017-03-17
      • 1970-01-01
      • 2014-07-20
      • 2017-09-04
      • 1970-01-01
      相关资源
      最近更新 更多