标签: py4j

为什么PySpark找不到py4j.java_gateway?

我安装了Spark,运行了sbt程序集,并且可以毫无问题地打开bin/pyspark.但是,我遇到了将pyspark模块加载到ipython中的问题.我收到以下错误:

In [1]: import pyspark
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-c15ae3402d12> in <module>()
----> 1 import pyspark

/usr/local/spark/python/pyspark/__init__.py in <module>()
     61
     62 from pyspark.conf import SparkConf
---> 63 from pyspark.context import SparkContext
     64 from pyspark.sql import SQLContext
     65 from pyspark.rdd import RDD

/usr/local/spark/python/pyspark/context.py in <module>()
     28 from pyspark.conf import SparkConf
     29 from pyspark.files import SparkFiles
---> 30 from pyspark.java_gateway import launch_gateway
     31 from pyspark.serializers import PickleSerializer, BatchedSerializer, UTF8Deserializer, \
     32     PairDeserializer, CompressedSerializer

/usr/local/spark/python/pyspark/java_gateway.py in <module>()
     24 from subprocess …
Run Code Online (Sandbox Code Playgroud)

ipython python-2.7 py4j apache-spark

43
推荐指数
3
解决办法
5万
查看次数

如何添加第三方java jar以在pyspark中使用

我有一些Java的第三方数据库客户端库.我想通过它访问它们

java_gateway.py
Run Code Online (Sandbox Code Playgroud)

例如:通过java网关使python客户端可以使用客户端类(不是jdbc驱动程序!):

java_import(gateway.jvm, "org.mydatabase.MyDBClient")
Run Code Online (Sandbox Code Playgroud)

目前尚不清楚将第三方库添加到jvm类路径的位置.我试图添加到compute-classpath.sh,但这似乎没有工作:我明白了

 Py4jError: Trying to call a package
Run Code Online (Sandbox Code Playgroud)

此外,与Hive比较时:hive jar文件不是通过compute-classpath.sh加载的,所以这让我很怀疑.似乎还有一些其他机制可以设置jvm side classpath.

python py4j apache-spark

23
推荐指数
6
解决办法
3万
查看次数

findspark.init()IndexError:列表索引超出范围错误

在Python 3.5 Jupyter环境中运行以下内容时,我收到以下错误.关于是什么导致它的任何想法?

import findspark
findspark.init()
Run Code Online (Sandbox Code Playgroud)

错误:

IndexError                                Traceback (most recent call
last) <ipython-input-20-2ad2c7679ebc> in <module>()
      1 import findspark
----> 2 findspark.init()
      3 
      4 import pyspark

/.../anaconda/envs/pyspark/lib/python3.5/site-packages/findspark.py in init(spark_home, python_path, edit_rc, edit_profile)
    132     # add pyspark to sys.path
    133     spark_python = os.path.join(spark_home, 'python')
--> 134     py4j = glob(os.path.join(spark_python, 'lib', 'py4j-*.zip'))[0]
    135     sys.path[:0] = [spark_python, py4j]
    136 

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

python py4j pyspark

12
推荐指数
2
解决办法
1万
查看次数

Pyspark ERROR:py4j.java_gateway: 尝试连接到 Java 服务器时发生错误 (127.0.0.1:50532)

您好,我正在与 Pyspark 合作,第一次使用 ML 包实施情感分析项目,cofde 工作正常,但突然显示上面提到的错误有人可以帮忙吗这是完整的错误描述

   ERROR:py4j.java_gateway:An error occurred while trying to connect to the Java server (127.0.0.1:50532)
Traceback (most recent call last):
  File "C:\opt\spark\spark-2.3.0-bin-hadoop2.7\python\lib\py4j-0.10.6-src.zip\py4j\java_gateway.py", line 852, in _get_connection
    connection = self.deque.pop()
IndexError: pop from an empty deque

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\opt\spark\spark-2.3.0-bin-hadoop2.7\python\lib\py4j-0.10.6-src.zip\py4j\java_gateway.py", line 990, in start
    self.socket.connect((self.address, self.port))
ConnectionRefusedError: [WinError 10061] Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée
Run Code Online (Sandbox Code Playgroud)

py4j pyspark apache-spark-ml

11
推荐指数
3
解决办法
1万
查看次数

错误:无法找到 py4j,您的 SPARK_HOME 可能配置不正确

我无法在 Jupyter 笔记本中运行以下导入。

findspark.init('home/ubuntu/spark-3.0.0-bin-hadoop3.2')
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

    ---------------------------------------------------------------------------
~/.local/lib/python3.6/site-packages/findspark.py in init(spark_home, python_path, edit_rc, edit_profile)
    144     except IndexError:
    145         raise Exception(
--> 146             "Unable to find py4j, your SPARK_HOME may not be configured correctly"
    147         )
    148     sys.path[:0] = [spark_python, py4j]

Exception: Unable to find py4j, your SPARK_HOME may not be configured correctly
Run Code Online (Sandbox Code Playgroud)

我确实安装了py4j并尝试将以下行添加到 ~/.bashrc 中

export SPARK_HOME=/home/ubuntu/spark-3.0.0-bin-hadoop3.2
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.10.9-src.zip:$PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

python ubuntu py4j pyspark

11
推荐指数
2
解决办法
3万
查看次数

如何使用 AWS Glue 运行任意/DDL SQL 语句或存储过程

是否可以从 AWS Glue python 作业执行任意 SQL 命令,例如 ALTER TABLE?我知道我可以用它从表中读取数据,但是有没有办法执行其他数据库特定的命令?

我需要将数据提取到目标数据库中,然后立即运行一些 ALTER 命令。

py4j pyspark aws-glue

11
推荐指数
2
解决办法
1万
查看次数

py4J最简单的例子

我在Python中py4J使用pip在我的conda虚拟环境中安装.我写了一个超级简单的例子AdditionApplication.java来测试py4J,但它无法编译,即

javac AdditionApplication.java

没有抱怨 GatewayServer没有定义.

我对Python很了解,但遗憾的是不是Java.我还需要提供什么?

public class AdditionApplication {

  public int addition(int first, int second) {
    return first + second;
  }

  public static void main(String[] args) {
    AdditionApplication app = new AdditionApplication();
    // app is now the gateway.entry_point
    GatewayServer server = new GatewayServer(app);
    server.start();
  }
}
Run Code Online (Sandbox Code Playgroud)

如果重要,我安装了以下版本的Java:

java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

更新1

我添加:import …

python java py4j

10
推荐指数
1
解决办法
8086
查看次数

py4j - 我将如何在java中调用python方法

我最近发现py4j并且能够从python调用静态java方法.现在我想从java调用python方法.我找不到太多的文档,所以这是我能想到的最后一个地方,可能会告诉我它是否可能,以及如何.

java py4j

9
推荐指数
1
解决办法
4418
查看次数

实现java UDF并从pyspark调用它

我需要创建一个在pyspark python中使用的UDF,它使用java对象进行内部计算.

如果它是一个简单的python,我会做类似的事情:

def f(x):
    return 7
fudf = pyspark.sql.functions.udf(f,pyspark.sql.types.IntegerType())
Run Code Online (Sandbox Code Playgroud)

并使用以下方式调用:

df = sqlContext.range(0,5)
df2 = df.withColumn("a",fudf(df.id)).show()
Run Code Online (Sandbox Code Playgroud)

但是,我需要的函数的实现是在java而不是在python中.我需要以某种方式包装它,所以我可以从python中以类似的方式调用它.

我的第一个尝试是实现java对象,然后将其包装在pyspark中的python中并将其转换为UDF.因序列化错误而失败.

Java代码:

package com.test1.test2;

public class TestClass1 {
    Integer internalVal;
    public TestClass1(Integer val1) {
        internalVal = val1;
    }
    public Integer do_something(Integer val) {
        return internalVal;
    }    
}
Run Code Online (Sandbox Code Playgroud)

pyspark代码:

from py4j.java_gateway import java_import
from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType
java_import(sc._gateway.jvm, "com.test1.test2.TestClass1")
a = sc._gateway.jvm.com.test1.test2.TestClass1(7)
audf = udf(a,IntegerType())
Run Code Online (Sandbox Code Playgroud)

错误:

---------------------------------------------------------------------------
Py4JError                                 Traceback (most recent call last)
<ipython-input-2-9756772ab14f> in <module>()
      4 java_import(sc._gateway.jvm, "com.test1.test2.TestClass1") …
Run Code Online (Sandbox Code Playgroud)

python java py4j apache-spark pyspark

9
推荐指数
1
解决办法
3598
查看次数

如何在Scala Spark项目中使用PySpark UDF?

几个人(1,2,3)已经在PySpark应用使用的Scala UDF,通常出于性能原因进行讨论.我对此感兴趣 - 在Scala Spark项目中使用python UDF.

我特别感兴趣的是使用sklearn(和MLFlow)构建模型,然后将其有效地应用于Spark流工作中的记录.我知道我也可以在REST API后面托管python模型并在Spark流应用程序调用该APImapPartitions,但管理该任务的并发性并为托管模型设置API并不是我非常兴奋的事情. .

如果没有像Py4J这样的定制定制开发,这可能吗?这只是一个坏主意吗?

谢谢!

scala py4j apache-spark pyspark mlflow

9
推荐指数
1
解决办法
233
查看次数