问题标签 [google-cloud-dataproc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

google-cloud-dataproc - Google Cloud Dataproc - sc.textFile() 命令上的作业文件错误

这是我通过 UI 在 Dataproc 中作为 PySpark 作业提交的文件

它开始,然后出错

为什么是这样?Dataproc 不应该已经建立了火花上下文吗?我需要在我的代码中添加什么以便将其作为 Spark 命令接受

0 投票
1 回答
630 浏览

apache-spark - Spark 工作超出 RAM (java.lang.OutOfMemoryError),即使有很多。xmx 太低了?

我的 Spark 作业出现 java.lang.OutOfMemoryError,即使只有 20% 的总内存在使用中。

我尝试了几种配置:

  • 1x n1-highmem-16 + 2x n1-highmem-8
  • 3x n1-highmem-8

我的数据集包含 180 万条记录,从主节点上的本地 json 文件中读取。整个json格式的数据集是7GB。我正在尝试执行的工作涉及一个简单的计算,然后是一个 reduceByKey。没什么特别的。这项工作在我只有 32GB 内存 (xmx28g) 的单台家用计算机上运行良好,尽管它需要对磁盘进行一些缓存。

作业通过 spark-submit 在服务器本地 (SSH) 提交。

堆栈跟踪和 Spark 配置可以在这里查看:https ://pastee.org/sgda

编码

0 投票
1 回答
673 浏览

python - 如何加载无法在每个 Spark 执行器中腌制的数据?

我正在使用用 Cython 编写的NoAho 库。它的内部 trie不能被腌制:如果我将它加载到主节点上,我永远不会得到在 worker 中执行的操作的匹配项。

由于我想在每个 Spark 执行器中使用相同的 trie,我找到了一种懒惰加载 trie 的方法,灵感来自spaCy on Spark issue

虽然这可行,但所有.add()调用都会针对每个 Spark 作业执行,这大约需要一分钟。因为我不确定“Spark 作业”是正确的术语,所以我会更明确一点:我在 Jupyter 笔记本中使用 Spark,每次运行需要该get_match()功能的单元时,trie 永远不会被缓存并且需要一个分钟来加载尝试,这在运行时间中占主导地位。

我能做些什么来确保 trie 被缓存吗?或者我的问题有更好的解决方案吗?

0 投票
1 回答
360 浏览

hadoop - DataProc MapReduce 停止工作

我运行标准 hbase 类来计算 BigTable 表中的行数 (RowCounter)。使用 Google Console 中的 DataProc gui。它工作得很好,但几周后我尝试运行类似的 jar,但由于难以解释的原因,工作失败了。这看起来不像是连接参数问题,因为如果我使用不存在的 Hbase 表名,它会理解这一点。

1.1.2 和 1.0.1.1 Hbase 客户端的结果相同。1.0.1.1 来自示例。我发现由 bdutils 设置的集群使用 1.1.2 版本。

0 投票
1 回答
2364 浏览

java - 您如何使用 Google DataProc Java 客户端使用关联 GS 存储桶中的 jar 文件和类提交 Spark 作业?

我需要触发 Spark 作业以使用 API 调用从 JSON 文件聚合数据。我使用 spring-boot 来创建资源。因此,解决方案的步骤如下:

  1. 用户使用 json 文件作为输入发出 POST 请求
  2. JSON 文件存储在与 dataproc 集群关联的 google 存储桶中。
  3. 使用指定的 jars、类从 REST 方法中触发聚合 Spark 作业,参数是 json 文件链接。

我希望使用 Dataproc 的 Java 客户端而不是控制台或命令行来触发作业。你怎么做呢?

0 投票
1 回答
4547 浏览

apache-spark - 将 IPython notebook 连接到在不同机器上运行的 spark master

我不知道这是否已经在 SO 中得到解答,但我找不到解决我的问题的方法。

我在 Google Container Engine 的 docker 容器中运行了一个 IPython 笔记本,该容器基于此图像jupyter/all-spark-notebook

我还有一个使用google cloud dataproc创建的 spark 集群

Spark master 和 notebook 在不同的 VM中运行,但在相同的 region 和 zone中。

我的问题是我正在尝试从 IPython 笔记本连接到 spark master,但没有成功。我在我的 python 笔记本中使用了这段代码

我刚开始使用 spark,所以我确定我遗漏了一些东西(身份验证、安全性......),

我在那里发现的是通过SSH 隧道连接本地浏览器

有人已经做过这种设置了吗?

先感谢您

0 投票
1 回答
558 浏览

c# - 使用 c# 的 Google DataProc API 火花集群

我在 Big Query 中有数据,我想在 Spark 集群中运行分析。根据文档,如果我实例化一个 Spark 集群,它应该带有一个 Big Query 连接器。我正在寻找任何示例代码来执行此操作,在pyspark中找到了一个。找不到任何 c# 示例。还找到了一些关于 DataProc APIs nuget 包中的函数的文档。

正在寻找使用 c# 在 Google Cloud 中启动 Spark 集群的示例。

0 投票
1 回答
6761 浏览

apache-spark - Spark 在启动后一分钟失去所有执行者

pyspark使用默认设置在 8 节点 Google dataproc 集群上运行。启动几秒钟后,我看到 30 个执行程序核心正在运行(如预期的那样):

一分钟后:

从那时起,所有操作仅在 2 个核心上运行:

如果我rng.cache()在核心仍然连接的情况下运行,它们会保持连接并且作业会被分配。

检查监控应用程序(主节点上的端口 4040)显示执行程序已被删除:

是否有一些设置可以在没有变通方法的情况下保持核心连接?

0 投票
1 回答
786 浏览

apache-spark - Spark 1.6 kafka在dataproc py4j错误上流式传输

我收到以下错误:

Py4JError(u'调用 o73.createDirectStreamWithoutMessageHandler 时发生错误。Trace:\npy4j.Py4JException: Method createDirectStreamWithoutMessageHandler([class org.apache.spark.streaming.api.java.JavaStreamingContext, class java.util.HashMap, class java.util .HashSet,类 java.util.HashMap]) 不存在\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344) \n\tat py4j.Gateway.invoke(Gateway.java:252)\n\tat py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)\n\tat py4j.commands.CallCommand.execute(CallCommand.java: 79)\n\tat py4j.GatewayConnection.run(GatewayConnection.java:209)\n\tat java.lang.Thread.run(Thread.java:745)\n\n',)

我正在使用 spark-streaming-kafka-assembly_2.10-1.6.0.jar (它存在于我所有节点 + 主节点上的 /usr/lib/hadoop/lib/ 文件夹中)

(编辑)实际错误是: java.lang.NoSuchMethodError: org.apache.hadoop.yarn.util.Apps.crossPlatformify(Ljava/lang/String;)Ljava/lang/String;

这是由于错误的 hadoop 版本。因此 spark 应该使用正确的 hadoop 版本编译:

mvn -Phadoop-2.6 -Dhadoop.version=2.7.2 -DskipTests clean package

这将在 external/kafka-assembly/target 文件夹中生成一个 jar。

0 投票
1 回答
645 浏览

apache-spark - 在 Java 中等待 Google Dataproc SparkJob 的最佳方式是什么?

我目前正在使用 Dataproc 的 Java 客户端 API 通过 Spring REST 服务触发 Spark 作业。火花工作的基础是:

  1. 初始化火花
  2. 处理数据
  3. 将结果存储到 GS 存储桶 .json 文件中

我存储数据的原因是,当我的 Spark 作业完成并将结果存储在 JSON 文件中时,我可以从 REST 服务读取存储的结果。但是,Dataproc 的 Java 客户端 API 只是触发作业,并不等待作业完成。因此,等待火花工作完成的最佳方式是什么?我不想使用 Object.wait(int time) 因为不同的火花作业会有不同的执行时间。