3. 配置运行平台

中国谚语

工欲善其事,必先利其器。 --中国古语

一个好的编程平台可以为您节省很多麻烦和时间。在这里,我将只介绍如何安装我最喜欢的编程平台,并且只展示我知道的在Linux系统上设置它的最简单方法。如果你想安装在另一个操作系统上,你可以用谷歌搜索。在本节中,您可以学习如何在相应的编程平台和包上设置pyspark。

3.1. 在Databricks社区云上运行

如果您对Linux或Unix操作系统没有任何经验,我建议您在Databricks社区云上使用Spark。因为你不需要设置 Spark free 社区版。请遵循下面列出的步骤。

  1. 注册帐户:https://community.cloud.databricks.com/login.html

images/login.png
  1. 使用您的帐户登录,然后您可以创建集群(机器)、表(数据集)和 notebook(代码)。

images/workspace.png
  1. 创建运行代码的集群

images/cluster.png
  1. 导入数据集

images/table.png
images/dataset1.png

注解

您需要保存上传到dbfs的路径:/filestore/tables/05rmhuqv148968378010/。因为我们将使用此路径来加载数据集。

  1. 创建 notebook

images/notebook.png
images/codenotebook.png

完成以上5个步骤后,您就可以在Databricks社区云上运行Spark代码了。我将在Databricks社区云上运行以下所有演示。希望,当您运行演示代码时,您将得到以下结果:

+---+-----+-----+---------+-----+
|_c0|   TV|Radio|Newspaper|Sales|
+---+-----+-----+---------+-----+
|  1|230.1| 37.8|     69.2| 22.1|
|  2| 44.5| 39.3|     45.1| 10.4|
|  3| 17.2| 45.9|     69.3|  9.3|
|  4|151.5| 41.3|     58.5| 18.5|
|  5|180.8| 10.8|     58.4| 12.9|
+---+-----+-----+---------+-----+
only showing top 5 rows

root
 |-- _c0: integer (nullable = true)
 |-- TV: double (nullable = true)
 |-- Radio: double (nullable = true)
 |-- Newspaper: double (nullable = true)
 |-- Sales: double (nullable = true)

3.2. 在Mac和Ubuntu上配置Spark

3.2.1. 安装必备组件

我强烈建议你安装 Anaconda ,因为它包含大部分的先决条件并支持多个操作员系统。

  1. 安装Python

转到Ubuntu软件中心并执行以下步骤:

  1. 打开Ubuntu软件中心

  2. 搜索python

  3. 然后单击“安装”

或者打开终端并使用以下命令:

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev
                 libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
sudo apt-get install python
sudo easy_install pip
sudo pip install ipython

3.2.2. 安装Java

Java被许多其他软件所使用。所以很可能您已经安装了它。可以在命令提示符中使用以下命令:

java -version

否则,您可以按照 How do I install Java for my Mac? 在Java上安装Java并使用命令提示符中的以下命令安装在Ubuntu上:

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

3.2.3. 安装JavaSE运行环境

我安装了Oracle Java JDK .

警告

Installing Java and Java SE Runtime Environment steps are very important, since Spark is a domain-specific language written in Java.

您可以在命令提示符下使用以下命令检查您的Java是否可用,并找到它的版本:

java -version

如果您的Java安装成功,您将得到如下类似的结果:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

3.2.4. 安装Apache Spark

实际上,预构建版本不需要安装。您可以在解包时使用它。

  1. 下载:您可以从 Download Apache Spark™ .

  2. 解包:将Apache Spark™解包到要安装Spark的路径。

  3. 测试:测试先决条件:更改方向 spark-#.#.#-bin-hadoop#.#/bin 并运行

./pyspark
Python 2.7.13 |Anaconda 4.4.0 (x86_64)| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR,
use setLogLevel(newLevel).
17/08/30 13:30:12 WARN NativeCodeLoader: Unable to load native-hadoop
library for your platform... using builtin-java classes where applicable
17/08/30 13:30:17 WARN ObjectStore: Failed to get database global_temp,
returning NoSuchObjectException
Welcome to
       ____              __
      / __/__  ___ _____/ /__
     _\ \/ _ \/ _ `/ __/  '_/
    /__ / .__/\_,_/_/ /_/\_\   version 2.1.1
       /_/

Using Python version 2.7.13 (default, Dec 20 2016 23:05:08)
SparkSession available as 'spark'.

3.2.5. 配置 Spark

  1. Mac操作员系统: 打开你的 bash_profile 在终端

vim ~/.bash_profile

并将以下行添加到 bash_profile (记住改变路径)

# add for spark
export SPARK_HOME=your_spark_installation_path
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PATH=$PATH:$SPARK_HOME/bin
export PYSPARK_DRIVE_PYTHON="jupyter"
export PYSPARK_DRIVE_PYTHON_OPTS="notebook"

最后,请记住 bash_profile

source ~/.bash_profile
  1. Ubuntu操作员系统: 打开你的 bashrc 在终端

vim ~/.bashrc

并将以下行添加到 bashrc (记住改变路径)

# add for spark
export SPARK_HOME=your_spark_installation_path
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PATH=$PATH:$SPARK_HOME/bin
export PYSPARK_DRIVE_PYTHON="jupyter"
export PYSPARK_DRIVE_PYTHON_OPTS="notebook"

最后,请记住 bashrc

source ~/.bashrc

3.3. 在Windows上配置Spark

在Windows上安装开源软件对我来说总是一场噩梦。谢谢你的迪莱什·曼德洛。你可以按照博客中的详细步骤操作。 Getting Started with PySpark on Windows 在Windows操作系统上安装Apache Spark。

3.4. 带文本编辑器或IDE的pyspark

3.4.1. 带Jupyter notebook的pyspark

完成上述设置步骤后,请在 在Mac和Ubuntu上配置Spark ,那么你应该很好地在jupyter notebook中编写和运行pyspark代码。

images/jupyterWithPySpark.png

3.4.2. 派斯帕克与阿帕奇齐柏林齐柏林

完成上述设置步骤后,请在 在Mac和Ubuntu上配置Spark 那么你应该很好地用ApacheZeppelin编写和运行你的pyspark代码。

images/zeppelin.png

3.4.3. 派斯帕克与崇高的文本

完成上述设置步骤后,请在 在Mac和Ubuntu上配置Spark 然后,最好使用Sublime文本来编写pyspark代码,并在终端中将代码作为普通的python代码运行。

python test_pyspark.py

然后您应该在终端中得到输出结果。

images/sublimeWithPySpark.png

3.4.4. 日蚀星团

如果要在Eclipse上运行pyspark代码,则需要为 外部库 为了你 当前项目 如下:

  1. 打开项目的属性

images/PyDevProperties.png
  1. 为添加路径 外部库

images/pydevPath.png

然后,您应该可以在Eclipse上使用pydev运行代码。

images/pysparkWithEclipse.png

3.5. PySparkling Water : Spark +H2O

  1. 下载 Sparkling Water 发件人:https://s3.amazonaws.com/h2o-release/sparkling-water/rel-2.4/5/index.html

  2. 测试 PySparking

unzip sparkling-water-2.4.5.zip
cd  ~/sparkling-water-2.4.5/bin
./pysparkling

如果您对pyspark有正确的设置,那么您将得到以下结果:

Using Spark defined in the SPARK_HOME=/Users/dt216661/spark environmental property

Python 3.7.1 (default, Dec 14 2018, 13:28:58)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
2019-02-15 14:08:30 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
2019-02-15 14:08:31 WARN  Utils:66 - Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
2019-02-15 14:08:31 WARN  Utils:66 - Service 'SparkUI' could not bind on port 4041. Attempting port 4042.
17/08/30 13:30:12 WARN NativeCodeLoader: Unable to load native-hadoop
library for your platform... using builtin-java classes where applicable
17/08/30 13:30:17 WARN ObjectStore: Failed to get database global_temp,
returning NoSuchObjectException
Welcome to
       ____              __
      / __/__  ___ _____/ /__
     _\ \/ _ \/ _ `/ __/  '_/
    /__ / .__/\_,_/_/ /_/\_\   version 2.4.0
       /_/

Using Python version 3.7.1 (default, Dec 14 2018 13:28:58)
SparkSession available as 'spark'.
  1. 安装程序 pysparkling 带Jupyter notebook

将以下别名添加到 bashrc (Linux系统)或 bash_profile (MAC系统)

alias sparkling="PYSPARK_DRIVER_PYTHON="ipython" PYSPARK_DRIVER_PYTHON_OPTS=    "notebook" /~/~/sparkling-water-2.4.5/bin/pysparkling"
  1. 正常开放 pysparkling 在终端

sparkling

3.6. 在云端建立 Spark

遵循中的设置步骤 在Mac和Ubuntu上配置Spark 您可以在云上建立自己的集群,例如AWS、Google Cloud。实际上,对于那些云,它们有自己的大数据工具。您可以直接在任何设置下运行它们,就像Databricks社区云一样。如果您想了解更多详情,请随时与我联系。

3.7. 本节中的演示代码

此部分的代码可供下载 test_pyspark 和Jupyter notebook可从 test_pyspark_ipynb .

  • python源代码

## set up  SparkSession
from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()

df = spark.read.format('com.databricks.spark.csv').\
                               options(header='true', \
                               inferschema='true').\
                     load("/home/feng/Spark/Code/data/Advertising.csv",header=True)

df.show(5)
df.printSchema()