python - 在 Google Colab 中使用 pyspark

标签 python pyspark google-colaboratory

这是我在使用大量 StackOverflow 后的第一个问题,所以如果我提供不准确或不完整的信息,请纠正我
直到本周,我才按照我在互联网上找到的众多指南之一设置了一个 colab 笔记本,可以与 pyspark 一起运行,但本周它开始出现一些不同的错误。
使用的代码几乎是这样的:

!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 freeze正如在检查 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 install py4j它说它在我安装时已经安装,我尝试了互联网上的所有不同指南,但我无法再运行我的 Spark 代码。有谁知道如何解决这一问题?
我只将 colab 用于大学用途,因为我的电脑已经过时了,我对此知之甚少,但我确实需要让这款笔记本可靠地运行,所以我怎么知道是时候更新导入的版本了?

最佳答案

关注 this colab notebook这对我有用:
第一个单元格:

!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,您可以在其中找到 Spark UI;我的示例输出是:
--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 所在的地方。

关于python - 在 Google Colab 中使用 pyspark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63323344/

相关文章:

python - Django,在哪里更新失败的登录尝试以及为什么?

python - 提高我的 pyspark 数据过滤程序的性能

java - pyspark无法启动

python - 如何对 numpy 矩阵中的每个元素执行操作?

python - 在子进程中的共享 c_wchar_p 中设置字符串值?

Python按多个条件排序

pyspark - 如何在 Pyspark 中定义一个空数据框并附加相应的数据框?

python - Google colab 文件下载失败获取错误

python - 预言家在 google colab 返回 - 错误 : KeyError: 'metric_file'

python-3.x - 如何为模型准备测试集形状。使用 keras 和 tensorflow 进行评估?