- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 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/
我有一个初始化脚本,它从我们的本地工件存储库下载一个 .jar,并将其放入集群上每个节点上的 /usr/local/bin 中。我可以使用 运行它 gcloud dataproc jobs submi
我创建了一个简单的管道,它从 SQL Server 表读取并写入 BigQuery 表。然后我将其配置为使用 Spark 并部署和运行。它首先配置 dataproc 集群,我可以看到它相对快速地创建了
我正在尝试使用云指标监控 Dataproc 2.0 上的本地磁盘使用情况(百分比)。这对于监视 Spark 临时文件填满磁盘的情况很有用。 默认情况下,Dataproc 似乎只发送本地磁盘性能指标、C
我希望在我的 dataproc 集群的每个节点上设置一个环境变量,以便它可用于将在该集群上运行的 pyspark 作业。做这个的最好方式是什么? 我想知道是否有办法使用 Compute Engine
我正在尝试在 Dataproc 工作流模板中设置自动区域放置 我正在尝试在 Dataproc 工作流模板中设置自动区域放置,就像在 create a cluster 时所做的一样没有模板工作流 谷歌云
我正在考虑运行一个托管 Hive 服务器的持久性 GCP Dataproc 集群,该集群将提供 HiveQL 接口(interface),用于查询和更新存储在 Google Cloud Storage
刚开始熟悉 GCP dataproc。我注意到当我使用 gcloud dataproc jobs submit pyspark 时,作业是使用 spark.submit.deployMode=clie
我正在运行 PySpark 作业,但我无法确定工作进程失败的原因。 当我的作业正在运行时,我开始注意到作业输出中的堆栈跟踪,例如: 16/04/10 03:24:21 WARN org.apache.
我正在考虑运行一个托管 Hive 服务器的持久性 GCP Dataproc 集群,该集群将提供 HiveQL 接口(interface),用于查询和更新存储在 Google Cloud Storage
我正在尝试使用初始化脚本设置集群,但出现以下错误:[错误的 JSON:JSON 解析错误:意外的标识符“Google”]在日志文件夹中,初始化脚本输出日志不存在。这看起来很奇怪,因为它似乎在上周工作,
dataproc spark 作业日志位于何处?我知道“日志记录”部分下有来自驱动程序的日志,但是执行节点呢?另外,Spark 正在执行的详细步骤记录在哪里(我知道我可以在 Application M
我在 1 个集群上使用 Dataproc 和 1 个作业。 我想在创建集群后立即开始我的工作。我发现实现此目的的最佳方法是使用如下初始化脚本提交作业。 function submit_job() {
如何将参数传递到 dataproc pyspark 作业提交中调用的 python 脚本中?这是我一直在使用的命令: gcloud dataproc jobs submit pyspark --cl
Dataproc 没有与 Apache Ranger 和 Apache Sentry 的内置集成。那么Hive中推荐的用户授权方式是什么? 我是 Dataproc 的新手,您的回答真的很有帮助。 最佳
我使用 mysql 客户端从 dataproc 的主节点登录到 mysql 服务器,但现在失败了。 使用以下命令 mysql -uroot -p 我现在看到以下错误消息。 mysql: [Warnin
我想使用 Jupyter/iPython在 Cloud Dataproc .如何在创建新集群时自动安装和配置它? 最佳答案 Cloud Dataproc 团队有一个 GitHub repository
调试很慢。不清楚是否接受多个参数。文档字符串错误/不标准。 例如我们可以这样做: --initialization-actions a b c 当它失败时,如何在几秒钟而不是几分钟内调试......即
在创建我们的 Dataproc Spark 集群时,我们通过--properties spark:spark.jars.packages=mysql:mysql-connector-java:6.0.
我正在使用 Dataproc 工作流模板来运行 Sparkjob。我想将输入文件动态传递给 Sparkjob args,同时通过 Dataproc 工作流模板实例化它。我怎样才能实现它? 最佳答案 见
我运行多个批处理作业,我想将 dataproc 中的 jobId 引用到保存的输出文件中。 这将允许所有参数日志和与结果相关的输出。缺点仍然存在:随着 YARN 中的执行器消失,无法再获取单个执行器的
我是一名优秀的程序员,十分优秀!