这是我在使用大量StackOverflow后的第一个问题,如果我提供的信息不准确或不完整,请更正我
直到本周,我还按照我在互联网上找到的众多指南之一,使用pyspark运行了一个colab笔记本设置,但本周它开始出现一些不同的错误。
使用的代码大致如下:
!apt-get install openjdk-8-jdk-headless -qq > /dev/null
!wget -q https://downloads.apache.org/spark/spark-3.0.0-preview2/spark-3.0.0-preview2-bin-hadoop2.7.tgz
!tar -xvf spark-3.0.0-preview2-bin-hadoop2.7.tgz
!pip install -q findspark
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-3.0.0-preview2-bin-hadoop2.7"
import findspark
findspark.init()
我已经尝试将Java版本从8更改为11,并在https://downloads.apache.org/spark/上使用所有可用的Spark构建,并相应地更改HOME路径。我使用pip冻结
来检查colab中使用的Spark版本,它说pyspark 3.0.0,所以我尝试了3.0.0版上的所有版本,但我一直得到的是错误:
Exception: Unable to find py4j, your SPARK_HOME may not be configured correctly
我不太了解使用Java来实现这一点的必要性,但我也尝试过安装pyj4,尽管如此!pip安装py4j,它说我安装的时候已经安装了,我在互联网上尝试了各种不同的指南,但我不能再运行我的Spark代码了。有人知道如何解决这个问题吗?我只在大学使用colab,因为我的电脑已经过时了,我对它了解不多,但我真的需要让这个笔记本可靠地运行,所以我怎么知道是时候更新导入的版本了?
Spark版本在google colab中运行良好。请按照我的步骤操作:
!pip install pyspark==2.3.2
import pyspark
检查已安装的版本
pyspark.__version__
尝试创建Sparksession
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Sparkify").getOrCreate()
您现在可以在colab中使用Spark。享受吧!
@维克多一世也有类似的问题。这就是我所做的。
>
将现有的jupyter笔记本从colab下载到您的计算机驱动器。
在colab中创建一个新笔记本
执行以下操作
!pip3安装pyspark
将您的笔记本上传到同一个colab会话。
运行Spark会话并检查
以下是我的colab笔记本:
第一个单元格:
!pip install pyspark
!pip install -U -q PyDrive
!apt install openjdk-8-jdk-headless -qq
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
这几乎安装了pyspark。
但一定要按照这些步骤来启动Spark UI,它对理解物理计划、存储使用等非常有帮助。还有:它有漂亮的图形;)
第二个单元格:
from pyspark import SparkSession
from pyspark import SparkContext, SparkConf
# create the session
conf = SparkConf().set("spark.ui.port", "4050")
# create the context
sc = pyspark.SparkContext(conf=conf)
spark = SparkSession.builder.getOrCreate()
第三个单元格:
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
get_ipython().system_raw('./ngrok http 4050 &')
!sleep 10
!curl -s http://localhost:4040/api/tunnels | python3 -c \
"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
之后,您将看到一个URL,您将在其中找到SparkUI;我的示例输出是:
--2020-10-03 11:30:58-- https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
Resolving bin.equinox.io (bin.equinox.io)... 52.203.78.32, 52.73.16.193, 34.205.238.171, ...
Connecting to bin.equinox.io (bin.equinox.io)|52.203.78.32|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13773305 (13M) [application/octet-stream]
Saving to: ‘ngrok-stable-linux-amd64.zip.1’
ngrok-stable-linux- 100%[===================>] 13.13M 13.9MB/s in 0.9s
2020-10-03 11:31:00 (13.9 MB/s) - ‘ngrok-stable-linux-amd64.zip.1’ saved [13773305/13773305]
Archive: ngrok-stable-linux-amd64.zip
replace ngrok? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: ngrok
http://989c77d52223.ngrok.io
最后一个元素,http://989c77d52223.ngrok.io,是我的Spark UI居住的地方。
我一直试图获得一个简单的web操作来向API发出一个经过身份验证的get请求(我已经从示例代码中删除了实际的url和秘密)。 我已经在本地成功地运行了这一点,但是当我测试web动作时,它只是在记录“调用Axios”之后死亡。 它不会报告错误,我尝试实现一个承诺,认为线程在api响应之前就结束了,但没有效果。有什么线索吗?
问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope
我想使用Android Studio开发一个应用程序使用Gradle构建工具。我无法在上插入OpenCV repo和库。我的文件如下所示: 我如何在我的项目中添加OpenCV?
问题内容: 我有一个简单的Entitly类,(和单独类中的字段)。然后,我使用Spring Data()访问数据库(MySql),使用常规ID,查询可以正常工作,无论是Spring生成的查询还是我自己编写的查询。与我没有设法创建正确的查询。我想做的是选择所有id(发生某些情况的EmbeddedId字段之一),这里有一些代码示例,也许有人会知道如何解决它。 实体类: EmbeddedId类: 和存储
问题内容: 我正在研究控制建筑物的光和热的项目。后端(用Java编写)将在Mac Mini上运行,并且应该可以通过SOAP进行访问。 我希望将此项目的复杂性降至最低,因为我不希望每个使用它的人都必须设置应用程序服务器。所以到目前为止,我一直使用javax.xml.ws.Endpoint: 这样的效果出奇的好(嘿,您什么时候最后一次只用3行代码看到Java中的东西?),但是现在我正在寻找一种使用HT
问题内容: 我想使用系统蜂鸣器(并且只有在没有蜂鸣器/无法访问蜂鸣器时才使用扬声器)生成具有特定频率和长度(针对不同的声音信号)的蜂鸣声。我知道可以通过使用ioctl来做到这一点,但这需要root访问权限,而这是我所不希望的。 我知道我可以只使用“ beep”命令,但这将是一个依赖关系,如果可能的话,不应使用它(根本没有外部依赖关系,只有基本的linux库和C)。 我目前拥有的是以下代码(但这需要