【问题标题】:How to start Spark session on Vertex AI workbench Jupyterlab notebook?如何在 Vertex AI 工作台 Jupyterlab 笔记本上启动 Spark 会话?
【发布时间】:2022-08-13 05:24:04
【问题描述】:

您能告诉我如何在 Google Cloud Vertex AI 工作台 Jupyterlab 笔记本上启动 Spark 会话吗?
顺便说一句,这在 Google Colaboratory 中运行良好。
这里缺少什么?

# Install Spark NLP from PyPI
!pip install -q spark-nlp==4.0.1 pyspark==3.3.0

import os
import sys

# https://github.com/jupyter/jupyter/issues/248
os.environ[\"JAVA_HOME\"] = \"C:/Program Files/Java/jdk-18.0.1.1\"
os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]

import sparknlp

from sparknlp.base import *
from sparknlp.common import *
from sparknlp.annotator import *

from pyspark.ml import Pipeline
from pyspark.sql import SparkSession

import pandas as pd

spark=sparknlp.start() 

print(\"Spark NLP version: \", sparknlp.version())
print(\"Apache Spark version: \", spark.version)

spark



更新_2022-07-21:
嗨@Sayan。运行命令后,我仍然无法在 Vertex AI 工作台 Jupyterlab 笔记本上启动 Spark 会话 =(

# Install Spark NLP from PyPI
!pip install -q spark-nlp==4.0.1 pyspark==3.3.0

import os
# Included else \"JAVA_HOME is not set\"
# https://github.com/jupyter/jupyter/issues/248
os.environ[\"JAVA_HOME\"] = \"C:/Program Files/Java/jdk-18.0.1.1\"
os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]

import sparknlp
spark = sparknlp.start()

print(\"Spark NLP version: {}\".format(sparknlp.version()))
print(\"Apache Spark version: {}\".format(spark.version))

错误:

/opt/conda/lib/python3.7/site-packages/pyspark/bin/spark-class: line 71: C:/Program Files/Java/jdk-18.0.1.1/bin/java: No such file or directory
/opt/conda/lib/python3.7/site-packages/pyspark/bin/spark-class: line 96: CMD: bad array subscript
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
/tmp/ipykernel_5831/489505405.py in <module>
      6 
      7 import sparknlp
----> 8 spark = sparknlp.start()
      9 
     10 print(\"Spark NLP version: {}\".format(sparknlp.version()))

/opt/conda/lib/python3.7/site-packages/sparknlp/__init__.py in start(gpu, m1, memory, cache_folder, log_folder, cluster_tmp_dir, real_time_output, output_level)
    242         return SparkRealTimeOutput()
    243     else:
--> 244         spark_session = start_without_realtime_output()
    245         return spark_session
    246 

/opt/conda/lib/python3.7/site-packages/sparknlp/__init__.py in start_without_realtime_output()
    152             builder.config(\"spark.jsl.settings.storage.cluster_tmp_dir\", cluster_tmp_dir)
    153 
--> 154         return builder.getOrCreate()
    155 
    156     def start_with_realtime_output():

/opt/conda/lib/python3.7/site-packages/pyspark/sql/session.py in getOrCreate(self)
    267                         sparkConf.set(key, value)
    268                     # This SparkContext may be an existing one.
--> 269                     sc = SparkContext.getOrCreate(sparkConf)
    270                     # Do not update `SparkConf` for existing `SparkContext`, as it\'s shared
    271                     # by all sessions.

/opt/conda/lib/python3.7/site-packages/pyspark/context.py in getOrCreate(cls, conf)
    481         with SparkContext._lock:
    482             if SparkContext._active_spark_context is None:
--> 483                 SparkContext(conf=conf or SparkConf())
    484             assert SparkContext._active_spark_context is not None
    485             return SparkContext._active_spark_context

/opt/conda/lib/python3.7/site-packages/pyspark/context.py in __init__(self, master, appName, sparkHome, pyFiles, environment, batchSize, serializer, conf, gateway, jsc, profiler_cls, udf_profiler_cls)
    193             )
    194 
--> 195         SparkContext._ensure_initialized(self, gateway=gateway, conf=conf)
    196         try:
    197             self._do_init(

/opt/conda/lib/python3.7/site-packages/pyspark/context.py in _ensure_initialized(cls, instance, gateway, conf)
    415         with SparkContext._lock:
    416             if not SparkContext._gateway:
--> 417                 SparkContext._gateway = gateway or launch_gateway(conf)
    418                 SparkContext._jvm = SparkContext._gateway.jvm
    419 

/opt/conda/lib/python3.7/site-packages/pyspark/java_gateway.py in launch_gateway(conf, popen_kwargs)
    104 
    105             if not os.path.isfile(conn_info_file):
--> 106                 raise RuntimeError(\"Java gateway process exited before sending its port number\")
    107 
    108             with open(conn_info_file, \"rb\") as info:

RuntimeError: Java gateway process exited before sending its port number

    标签: python google-cloud-platform jupyter-lab google-cloud-vertex-ai johnsnowlabs-spark-nlp


    【解决方案1】:

    一个可能的原因是没有安装Java。当你创建一个Python-3 顶点 AI 工作台您可以将DebianUbuntu 作为操作系统,并且它没有预装Java。您需要手动安装它。 要安装,您可以使用

    sudo apt-get update
    sudo apt-get install default-jdk
    

    您可以按照tutorial 安装 Open JDK。

    您所有的问题都在于安装 JDK 并在环境中设置其路径。正确执行此操作后,您也不需要在 python 中设置路径。 你的代码应该是这样的

    # Install Spark NLP from PyPI
    !pip install -q spark-nlp==4.0.1 pyspark==3.3.0
    
    #no need to set the environment path
    
    import sparknlp
    #all other imports
    
    import pandas as pd
    
    spark=sparknlp.start() 
    
    print("Spark NLP version: ", sparknlp.version())
    print("Apache Spark version: ", spark.version)
    
    spark
    

    编辑:我已经尝试过你的代码并且有同样的错误。我所做的只是在工作台的 JupyterLab 中打开终端并在那里安装 java。

    从 Workbench 打开 JupyterLab

    笔记本实例。

    从打开终端File-&gt;New-&gt;Terminal

    从这里我下载并安装了 Java。

    您可以通过运行java --version 检查它是否已安装并添加到您的路径中,它将返回当前版本。

    【讨论】:

    • 感谢@Sayan 的回复。但它仍然无法正常工作。我已经更新了我尝试过的帖子。实际上我没有做对什么?我已经坚持了好几天了。提前致谢。
    • @gracenz 从屏幕截图中我不确定您执行了这些命令的哪个终端。似乎您已经打开了与某些 VM 的 SSH 连接。如果您使用的是console.google.com,那么您可以在 Jupyterlab 本身的工作台内打开一个终端。另外,您将路径设置为 C:/Program Files/Java/jdk-18.0.1.1,这是 Windows 虚拟机吗?因为 Linux 系统的路径与 Windows 不同。我将用我如何复制您的问题来更新我的答案。
    • 非常感谢@Sayan!终于成功了!我仍然是一个新手,并且正在通过反复试验进行搜索和尝试。我在错误的环境中运行了命令 - 顺便说一下 Windows 11 上的 Bash。不知道 Vertex AI Jupyterlab 笔记本中的终端。
    • 很高兴知道它对你有帮助
    【解决方案2】:

    您能否解释一下如何获得 root 访问权限以在 Vertex AI Notebook 中使用 sudo 命令?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-12
      • 2022-09-28
      • 2021-04-07
      • 2022-01-05
      • 2020-11-29
      • 1970-01-01
      • 2021-10-15
      • 2021-12-29
      相关资源
      最近更新 更多