【问题标题】:Create PySpark Profile for IPython为 IPython 创建 PySpark 配置文件
【发布时间】:2015-04-21 21:33:55
【问题描述】:

我点击此链接http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/ 为 IPython 创建 PySpark 配置文件。

00-pyspark-setup.py
# Configure the necessary Spark environment
import os
import sys

spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, spark_home + "\python")

# Add the py4j to the path.
# You may need to change the version number to match your install
sys.path.insert(0, os.path.join(spark_home, '\python\lib\py4j-0.8.2.1-src.zip'))

# Initialize PySpark to predefine the SparkContext variable 'sc'
execfile(os.path.join(spark_home, '\python\pyspark\shell.py'))

当我在 ipython-notebook 中输入 sc 时,我的问题是 '' 我应该看到类似于 <pyspark.context.SparkContext at 0x1097e8e90>. 的输出

关于如何解决它的任何想法?

【问题讨论】:

  • 你想达到什么目的。您的代码中哪里出现问题?
  • @Rias 我更新了我的问题
  • 在 Python 3 中删除了 execfile,因此最后一行必须更改为 exec(open(os.path.join(spark_home, '\python\pyspark\shell.py')).read() )。

标签: python apache-spark


【解决方案1】:

我也想这样做,但遇到了问题。现在,我改用findspark (https://github.com/minrk/findspark)。你可以用 pip 安装它(见https://pypi.python.org/pypi/findspark/):

$ pip install findspark

然后,在笔记本中:

import findspark
findspark.init()

import pyspark
sc = pyspark.SparkContext(appName="myAppName")

如果你想避免这个样板,你可以把上面的4行放在00-pyspark-setup.py中。

(现在我有 Spark 1.4.1。和 findspark 0.0.5。)

【讨论】:

    【解决方案2】:

    请尝试为SPARK_LOCAL_IP变量设置合适的值,例如:

    export SPARK_LOCAL_IP="$(hostname -f)"
    

    在你运行ipython notebook --profile=pyspark之前。

    如果这没有帮助,请尝试通过执行安装脚本来调试您的环境:

    python 00-pyspark-setup.py
    

    也许你可以通过这种方式找到一些错误行并进行调试。

    【讨论】:

      【解决方案3】:

      你在窗户上吗?我正在处理同样的事情,并且有几件事有所帮助。 在 00-pyspark-setup.py 中,更改此行(匹配您的 spark 文件夹的路径)

      # Configure the environment
      if 'SPARK_HOME' not in os.environ:
          print 'environment spark not set'
          os.environ['SPARK_HOME'] = 'C:/spark-1.4.1-bin-hadoop2.6'
      

      我确定你添加了一个新的环境变量,如果没有,这将手动设置它。

      我注意到的下一件事是,如果您使用 ipython 4(最新版本),配置文件的工作方式与您在所有教程中看到的方式不同。您可以通过添加打印语句或只是将它们弄乱以引​​发错误来尝试您的配置文件是否被调用。

      我正在使用较低版本的 iPython (3),我使用它来调用它

      ipython notebook --profile=pyspark
      

      【讨论】:

        【解决方案4】:

        00-pyspark-setup.py 更改为:

        # Configure the necessary Spark environment
        import os
        
        # Spark home
        spark_home = os.environ.get("SPARK_HOME")
        
        ######## CODE ADDED ########
        os.environ["PYSPARK_SUBMIT_ARGS"] = "--master local[2] pyspark-shell"
        ######## END OF ADDED CODE #########
        
        sys.path.insert(0, spark_home + "/python")
        sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.2.1-src.zip'))
        
        # Initialize PySpark to predefine the SparkContext variable 'sc'
        execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))
        

        基本上,添加的代码将 PYSPARK_SUBMIT_ARGS 环境变量设置为

        --master local[2] pyspark-shell,适用于独立的 Spark 1.6。

        现在再次运行 ipython notebook。运行os.environ["PYSPARK_SUBMIT_ARGS"],检查其值是否设置正确。如果是这样,那么输入 sc 应该会给您预期的输出,例如 <pyspark.context.SparkContext at 0x1097e8e90>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-04
          • 1970-01-01
          • 2011-01-09
          • 2020-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多