我安装了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这样的定制定制开发,这可能吗?这只是一个坏主意吗?
谢谢!