我安装了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) 我有一些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 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) 您好,我正在与 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) 我无法在 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) 是否可以从 AWS Glue python 作业执行任意 SQL 命令,例如 ALTER TABLE?我知道我可以用它从表中读取数据,但是有没有办法执行其他数据库特定的命令?
我需要将数据提取到目标数据库中,然后立即运行一些 ALTER 命令。
我在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)
我添加:import …
我最近发现py4j并且能够从python调用静态java方法.现在我想从java调用python方法.我找不到太多的文档,所以这是我能想到的最后一个地方,可能会告诉我它是否可能,以及如何.
我需要创建一个在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) 几个人(1,2,3)已经在PySpark应用使用的Scala UDF,通常出于性能原因进行讨论.我对此感兴趣 - 在Scala Spark项目中使用python UDF.
我特别感兴趣的是使用sklearn(和MLFlow)构建模型,然后将其有效地应用于Spark流工作中的记录.我知道我也可以在REST API后面托管python模型并在Spark流应用程序中调用该APImapPartitions,但管理该任务的并发性并为托管模型设置API并不是我非常兴奋的事情. .
如果没有像Py4J这样的定制定制开发,这可能吗?这只是一个坏主意吗?
谢谢!