面向特征工程优化的OpenMLDB Spark发行版#

简介#

OpenMLDB Spark发行版是面向特征工程进行优化高性能原生Spark版本。OpenMLDB Spark和标准Spark发行版一样提供Scala、Java、Python和R编程接口,用户使用OpenMLDB Spark发行版方法与标准版一致。

GitHub Repo: https://github.com/4paradigm/Spark/

下载OpenMLDB Spark发行版#

在Github的Releases页面提供了OpenMLDB Spark发行版的下载地址,用户可以直接下载到本地使用。

注意,预编译的OpenMLDB Spark发行版为allinone版本,可以支持Linux和MacOS操作系统,如有特殊需求也可以下载源码重新编译OpenMLDB Spark发行版。

OpenMLDB Spark配置#

OpenMLDB Spark兼容标准的Spark配置,除此之外,还支持新增的配置项,可以更好地利用原生执行引擎的性能优化。

新增配置#

配置项

说明

默认值

备注

spark.openmldb.window.parallelization

是否启动窗口并行计算优化

false

窗口并行计算可提高集群利用率但增加计算节点

spark.openmldb.addIndexColumn.method

添加索引列方法

monotonicallyIncreasingId

可选方法为zipWithUniqueId, zipWithIndex, monotonicallyIncreasingId

spark.openmldb.concatjoin.jointype

拼接拼表方法

inner

可选方法为inner, left, last

spark.openmldb.enable.native.last.join

是否开启NativeLastJoin优化

true

相比基于LeftJoin实现性能更高

spark.openmldb.enable.unsaferow.optimization

是否开启UnsafeRow内存优化

false

开启后降低编解码开销,目前部分复杂类型不支持

spark.openmldb.physical.plan.graphviz.path

导出物理计划图片路径

“”

默认不导出图片文件

使用Example Jars#

下载解压后,设置SPARK_HOME环境变量,可以直接执行Example Jars中的例子。

export SPARK_HOME=`pwd`/spark-3.0.0-bin-openmldbspark/

$SPARK_HOME/bin/spark-submit \
  --master local \
  --class org.apache.spark.examples.sql.SparkSQLExample \
  $SPARK_HOME/examples/jars/spark-examples*.jar

注意,SparkSQLExample为标准Spark源码自带的例子,部分SQL例子使用了OpenMLDB Spark优化进行加速,部分DataFrame例子不支持OpenMLDB Spark优化。

使用PySpark#

下载OpenMLDB Spark发行版后,也可以使用标准的PySpark编写应用,示例代码如下。

from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql.types import *
 
spark = SparkSession.builder.appName("demo").getOrCreate()
print(spark.version)

schema = StructType([
    StructField("name", StringType(), nullable=True),
    StructField("age", IntegerType(), nullable=True),
])

rows = [
    Row("Andy", 20),
    Row("Berta", 30),
    Row("Joe", 40)
]

spark.createDataFrame(spark.sparkContext.parallelize(rows), schema).createOrReplaceTempView("t1")
spark.sql("SELECT name, age + 1 FROM t1").show()

保存源码文件为openmldbspark_demo.py后,使用下面命令提交本地运行。

${SPARK_HOME}/bin/spark-submit \
    --master=local \
    ./openmldbspark_demo.py