我得到以下错误:星火1.6卡夫卡流媒体dataproc py4j错误
Py4JError(u'An error occurred while calling o73.createDirectStreamWithoutMessageHandler. Trace:\npy4j.Py4JException: Method createDirectStreamWithoutMessageHandler([class org.apache.spark.streaming.api.java.JavaStreamingContext, class java.util.HashMap, class java.util.HashSet, class java.util.HashMap]) does not exist\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',)
我使用的火花流 - 卡夫卡assembly_2.10-1.6.0.jar(这是目前位于/ usr/lib目录/ Hadoop的/ lib中/我的所有节点+ Master)的文件夹
(EDIT) 实际的错误是:java.lang.NoSuchMethodError:org.apache.hadoop.yarn.util.Apps.crossPlatformify(Ljava /朗/字符串;)Ljava /郎/字符串;
这是由于错误的hadoop版本。因此火花应该用正确的Hadoop版本进行编译:
mvn -Phadoop-2.6 -Dhadoop.version=2.7.2 -DskipTests clean package
这将导致外部/卡夫卡组装/目标文件夹一个罐子。
您的群集何时创建/您创建时是否传递过任何--image-version标志?你可以给你一些关于如何调用KafkaUtils.createStream()(或者,你是如何调用基础方法)的上下文吗? –
集群仅在昨天创建,映像版本1.0(火花1.6)。在这一刻。我们仍然使用spark-streaming-kafka-assembly_2.10-1.5.0.jar使用图像版本0.1(spark 1.5.0),以及使用相同jar的图像版本0.2,因为1.5.2 jar无法使用它们。然而,对于最新的版本,没有一个罐子似乎工作。使用KafkaUtils.createDirectStream方法时会引发该错误。当我使用spark 1.6和jar spark-streaming-kafka-assembly_2.10-1.6.0.jar(通过spark-submit使用--jars选项)在本地运行代码时,代码似乎完美运行。 – bjorndv
我一直在试图复制这个今天下午,并没有太多的运气。 Spark 1.5是否有可能通过Spark 1.6进入Dataproc 1.0集群(例如,spark-1.6和spark-1.5都已安装,或者spark-1.5与您的工作一起打包)?我已经通过了每个spark spark kafka jar我可以得到我的手(并从源代码构建一个装配jar),并在解包后检查KafkaUtilsPythonHelper以确保createDirectStreamWithoutMessageHandler方法存在正确的签名。 –