Jupyter 上 Sparkcollect() 的 IllegalArgumentException

2024-02-29

我设置了 Jupyter 4.3.0、Python 3.6.3 (Anaconda) 和 PySpark 2.2.1。

以下示例在通过 Jupyter 运行时将失败:

sc = SparkContext.getOrCreate()

rdd = sc.parallelize(['A','B','C'])
rdd.collect()

下面是完整的堆栈跟踪:

---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
<ipython-input-35-0d4a2ca9edf4> in <module>()
      2 
      3 rdd = sc.parallelize(['A','B','C'])
----> 4 rdd.collect()

/usr/local/Cellar/apache-spark/2.2.1/libexec/python/pyspark/rdd.py in collect(self)
    807         """
    808         with SCCallSiteSync(self.context) as css:
--> 809             port = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
    810         return list(_load_from_socket(port, self._jrdd_deserializer))
    811 

/usr/local/Cellar/apache-spark/2.2.1/libexec/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1131         answer = self.gateway_client.send_command(command)
   1132         return_value = get_return_value(
-> 1133             answer, self.gateway_client, self.target_id, self.name)
   1134 
   1135         for temp_arg in temp_args:

/usr/local/Cellar/apache-spark/2.2.1/libexec/python/pyspark/sql/utils.py in deco(*a, **kw)
     61     def deco(*a, **kw):
     62         try:
---> 63             return f(*a, **kw)
     64         except py4j.protocol.Py4JJavaError as e:
     65             s = e.java_exception.toString()

/usr/local/Cellar/apache-spark/2.2.1/libexec/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
    317                 raise Py4JJavaError(
    318                     "An error occurred while calling {0}{1}{2}.\n".
--> 319                     format(target_id, ".", name), value)
    320             else:
    321                 raise Py4JError(

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: java.lang.IllegalArgumentException
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
    at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:46)
    at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:443)
    at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:426)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
    at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)
    at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
    at scala.collection.mutable.HashMap$$anon$1.foreach(HashMap.scala:103)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
    at org.apache.spark.util.FieldAccessFinder$$anon$3.visitMethodInsn(ClosureCleaner.scala:426)
    at org.apache.xbean.asm5.ClassReader.a(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.b(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.accept(Unknown Source)
    at org.apache.xbean.asm5.ClassReader.accept(Unknown Source)
    at org.apache.spark.util.ClosureCleaner$$anonfun$org$apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:257)
    at org.apache.spark.util.ClosureCleaner$$anonfun$org$apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:256)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:256)
    at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:156)
    at org.apache.spark.SparkContext.clean(SparkContext.scala:2294)
    at org.apache.spark.SparkContext.runJob(SparkContext.scala:2068)
    at org.apache.spark.SparkContext.runJob(SparkContext.scala:2094)
    at org.apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:936)
    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:362)
    at org.apache.spark.rdd.RDD.collect(RDD.scala:935)
    at org.apache.spark.api.python.PythonRDD$.collectAndServe(PythonRDD.scala:467)
    at org.apache.spark.api.python.PythonRDD.collectAndServe(PythonRDD.scala)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
    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.base/java.lang.Thread.run(Thread.java:844)

使用 pyspark 客户端成功运行同一示例。使用时它也可以成功运行(在 Jupyter 或 pyspark 客户端中)take()代替collect().

对可能发生的事情有什么想法吗?这个帖子 https://stackoverflow.com/questions/48243877/illegalargumentexception-thrown-when-count-and-collect-function-in-spark表明这可能是 Spark 2.2.1 中的一些错误。如果可能的话,我宁愿不按照建议降级到 Spark 2.2.0。

UPDATE:我在 macOS High Sierra (10.13.3) 上运行。这是输出sc._conf.getAll():

[('spark.sql.catalogImplementation', 'hive'),
 ('spark.app.id', 'local-1517752276379'),
 ('spark.rdd.compress', 'True'),
 ('spark.serializer.objectStreamReset', '100'),
 ('spark.master', 'local[*]'),
 ('spark.executor.id', 'driver'),
 ('spark.submit.deployMode', 'client'),
 ('spark.driver.port', '55920'),
 ('spark.app.name', 'pyspark-shell'),
 ('spark.driver.host', '192.168.1.5')]

以下是一些进一步的 Jupyter-PySpark 集成配置:

~/.ipython/profile_pyspark/startup/00-pyspark-setup.py

import os
import sys
spark_home = os.environ.get('SPARK_HOME', None)
if not spark_home:
    raise ValueError('SPARK_HOME environment variable is not set')
sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.10.4-src.zip'))
exec(open(os.path.join(spark_home, 'python/pyspark/shell.py')).read())

~/Library/Jupyter/kernels/pyspark/kernel.json

{
    "display_name": "PySpark (Spark 2.2.1)",
    "language": "python",
    "argv": [
        "/Users/rodrygo/anaconda3/bin/python3",
        "-m",
        "ipykernel",
        "--profile=pyspark",
        "-f",
        "{connection_file}"
    ],
    "env": {
        "CAPTURE_STANDARD_OUT": "true",
        "CAPTURE_STANDARD_ERR": "true",
        "SEND_EMPTY_OUTPUT": "false",
        "SPARK_HOME": "/usr/local/Cellar/apache-spark/2.2.1/libexec/"
    }
}

对于那些遇到同样问题的人来说,Spark(从版本 2.2.1 开始)和 Java 9 似乎存在问题。我通过将 JAVA_HOME 设置回 Java 1.8 来使示例代码正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jupyter 上 Sparkcollect() 的 IllegalArgumentException 的相关文章

随机推荐

  • 使用 :data 属性作为选择器来过滤元素

    我正在尝试使用自定义数据属性通过下拉选择来过滤内容 我似乎无法让选择器正常工作 只是想知道这是否真的可能 目前正在看https api jqueryui com data selector https api jqueryui com da
  • 模型与服务解耦:如果我的模型需要服务怎么办?

    服务层应该位于模型层之上 因此 模型不应该调用服务 然而 我面临着我需要的情况 例如 interface Component getResult class Number implements Component private value
  • 自定义注解可以抛出自定义异常,而不是MethodArgumentNotValidException?

    我有一个 ExceptionHandler MethodArgumentNotValidException class 在验证失败时返回 HTTP 代码 400 我创建了一个自定义注释 需要将 HTTP 代码更改为 422 但是 由于异常处
  • Android Xperia X10 SoundPool

    我收到一些 Android 应用程序用户的报告称 X10 上没有播放声音 我有点困惑 因为它适用于我尝试过的所有其他手机 Neus One Hero Droid 我正在使用 SoundPool 类来播放声音 其他人在使用 X10 时是否遇到
  • 如何编译由多个文件组成的Go程序?

    我有一个小程序 由三个文件组成 所有文件都属于同一个包 main 但当我这样做时go build main go构建不成功 当它只是一个文件时 main go 一切正常 现在我花了一些功夫来分离代码 看起来编译器无法找到从中取出的内容mai
  • 从右到左方向按钮尺寸的不相关变化

    我将 9 个 jbutton 添加到 jpanel 中 并将面板添加到 jscrollpane 中 并将其添加到 jframe 中 http www pic1 iran forum ir images up9 954263236836585
  • 使用动态库进行 Objective C Method Swizzling

    我正在尝试学习方法调整 我在 Objective C 中创建了一个程序 它只调用其类中的一个方法 现在我正在尝试使用 DYLD INSERT LIBRARIES 加载动态库 以便我可以使用动态库中定义的新方法覆盖我的方法实现 目的是修改参数
  • 如何使用“concurrent.futures.ProcessPoolExecutor”取消长时间运行的子进程?

    你可以看到完整的here https github com traverseda rratbot blob master main py L35 我的代码的简化版本如下 executor ProcessPoolExecutor 10 try
  • 如何在 pl/sql 中的另一个游标的 select 语句中使用游标中的变量

    我想运行一个查询 获取结果 然后使用第二个语句 光标 中第一个语句的值与另一个 select 语句迭代该查询的结果 我的数据库中有 40 个用户 所有用户都具有相同的数据库模式结构 我想通过以下方式获取用户名 SELECT distinct
  • 在 PowerShell 中使用 StreamWriter 附加到文件

    我创建了一个 PowerShell 脚本 该脚本使用 StreamWriter 将 Windows 中文件夹的权限结果写入 CSV 文件 目前 该脚本为每个文件夹创建一个新文件 我的问题是 StreamWriter 是否可以附加到文件而不是
  • FirebaseCore 词法或预处理器问题

    所以我在使用 firebase 编译我的项目时遇到了问题 这个问题是在我更新所有 firebase pod 后开始的 自从我更新了 pod 后 我就一直收到此错误 词法或预处理器问题 然后当我转到错误是什么时 它说这个 找不到 Google
  • 对 kafka 消费者进行负载测试

    我试图弄清楚如何对卡夫卡消费者进行负载测试 在我的应用程序中 消费者从 kafka 读取消息并做了很多工作 其中大部分是在数据库中写入内容 由于这对我的团队来说是一个重要的过程 因此我希望能够对消费者进行负载测试 并能够获得一些有关消费情况
  • 将多行合并为一行以替换列中的空值

    如何将多行合并为一行 以便一行中的某些列替换要合并的另一行中相同列中的空值 这是我所拥有的和我想要实现的目标的一个例子 查询是 SELECT Drug Name DefaultVendor Name Drug Strength Catalo
  • AndroidrelativeLayoutalignTop不起作用

    我正在尝试在RelativeLayout 中使用alignTop 属性 以便将文本设置在个人资料图片的右侧 与图片的顶部对齐 这是我的布局
  • 将文本添加到 DataGridView 行标题

    C 是否允许将字符串添加到 DataGridView 中的 RowHeader 如果是的话 是如何实现的呢 我正在编写一个 Windows 窗体来显示今年迄今为止的客户付款数据 ColumnHeaders 显示一月 二月 三月等 而不是有一
  • 如何避免 JavaScript 中的短路求值?

    我需要执行两边 声明 但如果第一部分返回 则不会发生这种情况false 例子 function doSomething x console log x function checkSomething x var not1 x 1 if no
  • 如何保护客户端/服务器套接字通信的安全

    假设客户端和服务器应用程序在不同的计算机上运行 Today Server will receive the request and cast it as needed ProxyResponse message ProxyResponse
  • docker buildx“执行用户进程导致:执行格式错误”

    我正在尝试交叉编译一个 Rust 应用程序以在我的树莓派集群上运行 我看到 docker 的 buildx 应该能够使这成为可能 我现在有一个最小的 dockerfile 如下所示 FROM rust RUN apt get update
  • 在本地工作的 R 脚本不适用于shinyapp.io

    我正在尝试组装一个 R Shiny 应用程序 至少在最初 它可以绘制日期数据的直方图 我让它在 RStudio 的本地系统上工作得很好 但在闪亮的应用程序 io 中它不起作用 目前 该应用程序非常简单 用户界面实际上没有做任何事情 数据只是
  • Jupyter 上 Sparkcollect() 的 IllegalArgumentException

    我设置了 Jupyter 4 3 0 Python 3 6 3 Anaconda 和 PySpark 2 2 1 以下示例在通过 Jupyter 运行时将失败 sc SparkContext getOrCreate rdd sc paral