PySpark MLUtils saveAsLibSVWMFile覆盖现有文件

PySpark MLUtils saveAsLibSVWMFile覆盖现有文件,pyspark,spark-dataframe,libsvm,Pyspark,Spark Dataframe,Libsvm,我有一个要存储两次的数据集。一组带有时间戳,一组作为当前版本。因此,我需要覆盖现有的文件。当我运行以下代码时,pyspark抛出一个已经存在的异常 你知道如何覆盖当前文件吗 #Save the training dataset as LibSVM File path="hdfs:///path/trainingdata/trainingdata{}".format(time.strftime("%Y%m%d%H%M%S", time.localtime())) MLUtils.saveAsLib

我有一个要存储两次的数据集。一组带有时间戳,一组作为当前版本。因此,我需要覆盖现有的文件。当我运行以下代码时,pyspark抛出一个已经存在的异常

你知道如何覆盖当前文件吗

#Save the training dataset as LibSVM File
path="hdfs:///path/trainingdata/trainingdata{}".format(time.strftime("%Y%m%d%H%M%S", time.localtime()))
MLUtils.saveAsLibSVMFile(trainingdata, path)

path =  "hdfs:///path/trainingdata/current"
MLUtils.saveAsLibSVMFile(trainingdata, path)
例外

MLUtils.saveAsLibSVMFile(trainingdata, path)                                
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/hdp/current/spark2-client/python/pyspark/mllib/util.py", line 152, in saveAsLibSVMFile
    lines.saveAsTextFile(dir)
  File "/usr/hdp/current/spark2-client/python/pyspark/rdd.py", line 1519, in saveAsTextFile
    keyed._jrdd.map(self.ctx._jvm.BytesToString()).saveAsTextFile(path)
  File "/usr/hdp/current/spark2-client/python/lib/py4j-0.10.3-src.zip/py4j/java_gateway.py", line 1133, in __call__
  File "/usr/hdp/current/spark2-client/python/pyspark/sql/utils.py", line 63, in deco
    return f(*a, **kw)
  File "/usr/hdp/current/spark2-client/python/lib/py4j-0.10.3-src.zip/py4j/protocol.py", line 319, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o105.saveAsTextFile.
: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://hws-hadoop-1.novalocal:8020/user/admin/lukas/trainingdata/current already exists
    at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:131)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1.apply$mcV$sp(PairRDDFunctions.scala:1184)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1.apply(PairRDDFunctions.scala:1161)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopDataset$1.apply(PairRDDFunctions.scala:1161)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:358)
    at org.apache.spark.rdd.PairRDDFunctions.saveAsHadoopDataset(PairRDDFunctions.scala:1161)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$4.apply$mcV$sp(PairRDDFunctions.scala:1064)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$4.apply(PairRDDFunctions.scala:1030)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$4.apply(PairRDDFunctions.scala:1030)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:358)
    at org.apache.spark.rdd.PairRDDFunctions.saveAsHadoopFile(PairRDDFunctions.scala:1030)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$1.apply$mcV$sp(PairRDDFunctions.scala:956)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$1.apply(PairRDDFunctions.scala:956)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$1.apply(PairRDDFunctions.scala:956)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:358)
    at org.apache.spark.rdd.PairRDDFunctions.saveAsHadoopFile(PairRDDFunctions.scala:955)
    at org.apache.spark.rdd.RDD$$anonfun$saveAsTextFile$1.apply$mcV$sp(RDD.scala:1459)
    at org.apache.spark.rdd.RDD$$anonfun$saveAsTextFile$1.apply(RDD.scala:1438)
    at org.apache.spark.rdd.RDD$$anonfun$saveAsTextFile$1.apply(RDD.scala:1438)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:358)
    at org.apache.spark.rdd.RDD.saveAsTextFile(RDD.scala:1438)
    at org.apache.spark.api.java.JavaRDDLike$class.saveAsTextFile(JavaRDDLike.scala:549)
    at org.apache.spark.api.java.AbstractJavaRDDLike.saveAsTextFile(JavaRDDLike.scala:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:237)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:280)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:214)
    at java.lang.Thread.run(Thread.java:745)
MLUtils.saveAsLibSVMFile(培训数据,路径)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
saveAsLibSVMFile中的文件“/usr/hdp/current/spark2 client/python/pyspark/mllib/util.py”,第152行
lines.saveAsTextFile(目录)
文件“/usr/hdp/current/spark2 client/python/pyspark/rdd.py”,第1519行,在saveAsTextFile中
keyed._jrdd.map(self.ctx._jvm.BytesToString()).saveAsTextFile(路径)
文件“/usr/hdp/current/spark2 client/python/lib/py4j-0.10.3-src.zip/py4j/java_gateway.py”,第1133行,在__
文件“/usr/hdp/current/spark2 client/python/pyspark/sql/utils.py”,第63行,deco格式
返回f(*a,**kw)
文件“/usr/hdp/current/spark2 client/python/lib/py4j-0.10.3-src.zip/py4j/protocol.py”,第319行,在get_return_值中
py4j.protocol.Py4JJavaError:调用o105.saveAsTextFile时出错。
:org.apache.hadoop.mapred.filealreadyexistException:输出目录hdfs://hws-hadoop-1.novalocal:8020/user/admin/lukas/trainingdata/current 已经存在
位于org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:131)
在org.apache.spark.rdd.pairddfunctions$$anonfun$saveAshadopDataSet$1.apply$mcV$sp(pairddfunctions.scala:1184)
在org.apache.spark.rdd.pairddfunctions$$anonfun$saveAshadopDataSet$1.apply上(pairddfunctions.scala:1161)
在org.apache.spark.rdd.pairddfunctions$$anonfun$saveAshadopDataSet$1.apply上(pairddfunctions.scala:1161)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
位于org.apache.spark.rdd.rdd.withScope(rdd.scala:358)
位于org.apache.spark.rdd.pairddfunctions.saveAsHadoopDataset(pairddfunctions.scala:1161)
位于org.apache.spark.rdd.pairddfunctions$$anonfun$saveAsHadoopFile$4.apply$mcV$sp(pairddfunctions.scala:1064)
位于org.apache.spark.rdd.pairddfunctions$$anonfun$saveAsHadoopFile$4.apply(pairddfunctions.scala:1030)
位于org.apache.spark.rdd.pairddfunctions$$anonfun$saveAsHadoopFile$4.apply(pairddfunctions.scala:1030)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
位于org.apache.spark.rdd.rdd.withScope(rdd.scala:358)
位于org.apache.spark.rdd.pairddfunctions.saveAsHadoopFile(pairddfunctions.scala:1030)
位于org.apache.spark.rdd.pairddfunctions$$anonfun$saveAsHadoopFile$1.apply$mcV$sp(pairddfunctions.scala:956)
位于org.apache.spark.rdd.pairddfunctions$$anonfun$saveAsHadoopFile$1.apply(pairddfunctions.scala:956)
位于org.apache.spark.rdd.pairddfunctions$$anonfun$saveAsHadoopFile$1.apply(pairddfunctions.scala:956)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
位于org.apache.spark.rdd.rdd.withScope(rdd.scala:358)
位于org.apache.spark.rdd.pairddfunctions.saveAsHadoopFile(pairddfunctions.scala:955)
位于org.apache.spark.rdd.rdd$$anonfun$savastextfile$1.apply$mcV$sp(rdd.scala:1459)
位于org.apache.spark.rdd.rdd$$anonfun$savastextfile$1.apply(rdd.scala:1438)
位于org.apache.spark.rdd.rdd$$anonfun$savastextfile$1.apply(rdd.scala:1438)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
位于org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
位于org.apache.spark.rdd.rdd.withScope(rdd.scala:358)
位于org.apache.spark.rdd.rdd.saveAsTextFile(rdd.scala:1438)
位于org.apache.spark.api.java.JavaRDDLike$class.savastextfile(JavaRDDLike.scala:549)
位于org.apache.spark.api.java.AbstractJavaRDDLike.saveAsTextFile(JavaRDDLike.scala:45)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:237)
位于py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
在py4j.Gateway.invoke处(Gateway.java:280)
位于py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
在py4j.commands.CallCommand.execute(CallCommand.java:79)
在py4j.GatewayConnection.run处(GatewayConnection.java:214)
运行(Thread.java:745)

我找到了一个适合我的工作

调用hdfs commind行接口并复制文件

# Save the training dataset as LibSVM File
path = "hdfs:///path/trainingdata/trainingdata{}".format(time.strftime("%Y%m%d%H%M%S", time.localtime()))
MLUtils.saveAsLibSVMFile(trainingdata, path)

cmd = "hadoop fs -cp -f  {}/* hdfs:///user/admin/lukas/trainingdata/current".format(path)
print cmd
os.system(cmd)

我找到了一份适合我的工作

调用hdfs commind行接口并复制文件

# Save the training dataset as LibSVM File
path = "hdfs:///path/trainingdata/trainingdata{}".format(time.strftime("%Y%m%d%H%M%S", time.localtime()))
MLUtils.saveAsLibSVMFile(trainingdata, path)

cmd = "hadoop fs -cp -f  {}/* hdfs:///user/admin/lukas/trainingdata/current".format(path)
print cmd
os.system(cmd)