python - 如何将 PyCharm 与 PySpark 链接?

标签 python apache-spark pyspark pycharm homebrew

我是 apache spark 的新手,显然我在我的 macbook 中安装了带有 homebrew 的 apache-spark:

Last login: Fri Jan  8 12:52:04 on console
user@MacBook-Pro-de-User-2:~$ pyspark
Python 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/01/08 14:46:44 INFO SparkContext: Running Spark version 1.5.1
16/01/08 14:46:46 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/01/08 14:46:47 INFO SecurityManager: Changing view acls to: user
16/01/08 14:46:47 INFO SecurityManager: Changing modify acls to: user
16/01/08 14:46:47 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(user); users with modify permissions: Set(user)
16/01/08 14:46:50 INFO Slf4jLogger: Slf4jLogger started
16/01/08 14:46:50 INFO Remoting: Starting remoting
16/01/08 14:46:51 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.64:50199]
16/01/08 14:46:51 INFO Utils: Successfully started service 'sparkDriver' on port 50199.
16/01/08 14:46:51 INFO SparkEnv: Registering MapOutputTracker
16/01/08 14:46:51 INFO SparkEnv: Registering BlockManagerMaster
16/01/08 14:46:51 INFO DiskBlockManager: Created local directory at /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/blockmgr-769e6f91-f0e7-49f9-b45d-1b6382637c95
16/01/08 14:46:51 INFO MemoryStore: MemoryStore started with capacity 530.0 MB
16/01/08 14:46:52 INFO HttpFileServer: HTTP File server directory is /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/spark-8e4749ea-9ae7-4137-a0e1-52e410a8e4c5/httpd-1adcd424-c8e9-4e54-a45a-a735ade00393
16/01/08 14:46:52 INFO HttpServer: Starting HTTP Server
16/01/08 14:46:52 INFO Utils: Successfully started service 'HTTP file server' on port 50200.
16/01/08 14:46:52 INFO SparkEnv: Registering OutputCommitCoordinator
16/01/08 14:46:52 INFO Utils: Successfully started service 'SparkUI' on port 4040.
16/01/08 14:46:52 INFO SparkUI: Started SparkUI at http://192.168.1.64:4040
16/01/08 14:46:53 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
16/01/08 14:46:53 INFO Executor: Starting executor ID driver on host localhost
16/01/08 14:46:53 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 50201.
16/01/08 14:46:53 INFO NettyBlockTransferService: Server created on 50201
16/01/08 14:46:53 INFO BlockManagerMaster: Trying to register BlockManager
16/01/08 14:46:53 INFO BlockManagerMasterEndpoint: Registering block manager localhost:50201 with 530.0 MB RAM, BlockManagerId(driver, localhost, 50201)
16/01/08 14:46:53 INFO BlockManagerMaster: Registered BlockManager
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 1.5.1
      /_/

Using Python version 2.7.10 (default, Jul 13 2015 12:05:58)
SparkContext available as sc, HiveContext available as sqlContext.
>>>

我想开始玩以了解有关 MLlib 的更多信息。但是,我使用 Pycharm 在 python 中编写脚本。问题是:当我去 Pycharm 并尝试调用 pyspark 时,Pycharm 找不到该模块。我尝试将路径添加到 Pycharm 如下:

cant link pycharm with spark

然后从 blog我试过这个:

import os
import sys

# Path for spark source folder
os.environ['SPARK_HOME']="/Users/user/Apps/spark-1.5.2-bin-hadoop2.4"

# Append pyspark  to Python Path
sys.path.append("/Users/user/Apps/spark-1.5.2-bin-hadoop2.4/python/pyspark")

try:
    from pyspark import SparkContext
    from pyspark import SparkConf
    print ("Successfully imported Spark Modules")

except ImportError as e:
    print ("Can not import Spark Modules", e)
    sys.exit(1)

仍然无法开始将 PySpark 与 Pycharm 一起使用,知道如何将 PyCharm 与 apache-pyspark“链接”吗?

更新:

然后我搜索apache-spark和python路径,以便设置Pycharm的环境变量:

apache-spark 路径:

user@MacBook-Pro-User-2:~$ brew info apache-spark
apache-spark: stable 1.6.0, HEAD
Engine for large-scale data processing
https://spark.apache.org/
/usr/local/Cellar/apache-spark/1.5.1 (649 files, 302.9M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/apache-spark.rb

python 路径:

user@MacBook-Pro-User-2:~$ brew info python
python: stable 2.7.11 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org
/usr/local/Cellar/python/2.7.10_2 (4,965 files, 66.9M) *

然后根据以上信息我尝试设置环境变量如下:

configuration 1

知道如何正确链接 Pycharm 和 pyspark 吗?

然后,当我使用上述配置运行 python 脚本时,我遇到了这个异常:

/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/user/PycharmProjects/spark_examples/test_1.py
Traceback (most recent call last):
  File "/Users/user/PycharmProjects/spark_examples/test_1.py", line 1, in <module>
    from pyspark import SparkContext
ImportError: No module named pyspark

更新: 然后我尝试了@zero323 提出的这个配置

配置一:

/usr/local/Cellar/apache-spark/1.5.1/ 

conf 1

出来:

 user@MacBook-Pro-de-User-2:/usr/local/Cellar/apache-spark/1.5.1$ ls
CHANGES.txt           NOTICE                libexec/
INSTALL_RECEIPT.json  README.md
LICENSE               bin/

配置2:

/usr/local/Cellar/apache-spark/1.5.1/libexec 

enter image description here

出来:

user@MacBook-Pro-de-User-2:/usr/local/Cellar/apache-spark/1.5.1/libexec$ ls
R/        bin/      data/     examples/ python/
RELEASE   conf/     ec2/      lib/      sbin/

最佳答案

使用 PySpark 包(Spark 2.2.0 及更高版本)

SPARK-1267被合并后,您应该能够通过 pip 在用于 PyCharm 开发的环境中安装 Spark 来简化流程。

  1. 转到文件 -> 设置 -> 项目解释器
  2. 点击安装按钮并搜索 PySpark

    enter image description here

  3. 点击安装包按钮。

手动使用用户提供的 Spark 安装

创建运行配置:

  1. 转到运行 -> 编辑配置
  2. 添加新的 Python 配置
  3. 设置 Script 路径,使其指向您要执行的脚本
  4. 编辑环境变量字段,使其至少包含:

    • SPARK_HOME - 它应该指向安装 Spark 的目录。它应该包含诸如 bin(带有 spark-submitspark-shell 等)和 conf 等目录(使用 spark-defaults.confspark-env.sh 等)
    • PYTHONPATH - 它应该包含 $SPARK_HOME/python 和可选的 $SPARK_HOME/python/lib/py4j-some-version.src.zip 如果不可用,否则。 some-version 应匹配给定 Spark 安装使用的 Py4J 版本(0.8.2.1 - 1.5、0.9 - 1.6、0.10.3 - 2.0、0.10.4 - 2.1、0.10.4 - 2.2、0.10 .6 - 2.3, 0.10.7 - 2.4)

      enter image description here

  5. 应用设置

将 PySpark 库添加到解释器路径(代码完成所需):

  1. 转到文件 -> 设置 -> 项目解释器
  2. 为您要与 Spark 一起使用的解释器打开设置
  3. 编辑解释器路径,使其包含 $SPARK_HOME/python 的路径(如果需要,可以使用 Py4J)
  4. 保存设置

可选

  1. 安装或添加到路径type annotations匹配已安装的 Spark 版本以获得更好的完成和静态错误检测(免责声明 - 我是该项目的作者)。

终于

使用新创建的配置来运行您的脚本。

关于python - 如何将 PyCharm 与 PySpark 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685905/

相关文章:

python - random.seed() 不适用于 random.choice()

python - 为什么我的 python 类继承不正确?

Python 3 : End of File error with no message

java - 在java中处理来自mysql的数百万条记录并将结果存储在另一个数据库中

python - 如何对 PySpark DataFrame 进行花式索引?

python - 无法使用 pyspark 数据帧将 utm 转换为 latlong

python - 无法登录 Django 单元测试

scala - 使用 Spark DataFrame 将数据插入 Cassandra 表

performance - Pyspark 中的 Limit(n) 与 Show(n) 性能差异

python - 运行Spark时遇到 "WARN ProcfsMetricsGetter: Exception when trying to compute pagesize"错误