问题描述
我们知道保存到存储器时,Spark Dataframe订单的顺序丢失了 例如,假设我们有一个3列的Spark数据框
+--------+-----+---+
|feature |label| id|
+--------+-----+---+
| ... | ... |...|
+--------+-----+---+
我们可以使用以下方法将数据框另存为libsvm:
df.select("label","feature").write.mode("overwrite").format("libsvm").save(some_path)
但是,转换为libsvm后,我们丢失了id
列。
问题:如何在libsvm中找到数据的id
?
解决方法
您丢失了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)