gpt4 book ai didi

java - 如何使用 FileWriter 将文件写入 google dataproc?

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:29 25 4
gpt4 key购买 nike

我有一个 java spark 应用程序,需要收集 spark 作业的输出,然后将其保存到 csv 文件中。这是我的代码:

fileWriter = new FileWriter("gs://dataflow-exp1/google_storage_tests/20170524/outputfolder/Test.csv", true);
fileWriter.append("col1,col2,col3,col4");

当我在 google data proc 中执行 spark 作业时,出现找不到文件异常。我也确实对该文件夹具有读/写权限。

java.io.FileNotFoundException: gs:/dataflow-exp1/google_storage_tests/20170524/outputfolder/Test.csv (No such file or directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
at java.io.FileWriter.<init>(FileWriter.java:78)
at com.src.main.MyApp.testWriteOutput(MyApp.java:72)
at com.src.main.MyApp.main(MyApp.java:30)
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 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

看起来文件编写器在运行时使用单斜杠 / 而不是 gs: 之后的双斜杠 //。我该如何解决这个问题?

我也愿意使用其他方式代替 FileWriter 将文件写入 google data proc。

最佳答案

Dataproc 安装 Hadoop FileSystem可从 Spark 访问的 GCS 连接器;通常,Hadoop 或 Spark 中的内容应该构建在该接口(interface)之上,该接口(interface)不会自动与基本 Java File 接口(interface)兼容。你应该这样做:

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.Configuration;

Path outputPath = new Path("gs://dataflow-exp1/google_storage_tests/20170524/outputfolder/Test.csv");
OutputStream out = outputPath.getFileSystem(new Configuration()).create(outputPath);

然后根据您需要的任何编写器界面对其进行调整。

关于java - 如何使用 FileWriter 将文件写入 google dataproc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44156052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com