Spark介绍(七)PySpark

一、PySpark简介

    PySpark 是 Spark 为 Python 开发者提供的 API ,位于 $SPARK_HOME/bin 目录,其依赖于 Py4J。

   Spark2.0之后的初始化,会在spark安装pyspark的模块,直接在spark/bin/启动pyspark是会报错的:

  Spark介绍(七)PySpark_第1张图片

原因是因为spark2.0默认安装的Python是3.6的,而“Spark <= 2.1.0 is not compatible with Python 3.6”,需要安装Python3.5,如果是anaconda,直接把版本切换到3.5就行了:

conda create -n py35 python=3.5

然后在启动pyspark的时候,先启动3.5版本的Python虚拟环境,然后再运行pyspark,就能初始化pyspark了

source activate py35
pyspark

Spark介绍(七)PySpark_第2张图片

PySpark操作DataFrame

    具体操作例子可以见官方的例子,python操作sparksql,还有详细API可以参见pyspark.sql

    比如从MySQL数据库中读取数据,生成DataFrame:

url = "jdbc:mysql://127.0.0.1:3306/databaseName?useSSL=false"
driver = "com.mysql.jdbc.Driver"

df = spark.read \
    .format("jdbc") \
    .option("url", url).option("driver", driver).option("user", user).option("password",password) \
    .option("dbtable", "schema.table_name") \
    .load()

df.printSchema()
df.show()

PySpark脚本运行

    对于不是从spark/bin/pyspark启动的环境,需要在Python脚本中增加

from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("PySparkAppName") \
    .getOrCreate()

在shell中执行时可以这样写,这样就可以将python写的spark程序提交到yarn中:

sudo -u hdfs bin/spark-submit --master yarn-client --jars $SPARK_HOME/jars/mysql-connector-java-5.1.44.jar /tmp/脚本名称.py

注:由于作者的环境是CDH,权限分明,执行spark时需要将用户切换到hdfs才能操作HDFS上的文件,同时例子有用到mysql,需要增加mysql的依赖包,其他类似。

 

你可能感兴趣的:(技术介绍,Spark介绍和实践)