Skip to content

快速开始

Ceng edited this page Oct 18, 2022 · 6 revisions

启动一个 PostgreSQL 数据库

可以通过docker使用下面命令快速搭建一个pg数据库:

docker run -d --name yugabyte  -p7000:7000 -p9000:9000 -p5433:5433 -p9042:9042  yugabytedb/yugabyte:latest bin/yugabyted start  --daemon=false

如果你想搭建一个pg数据库集群,可以参考 YugabyteDB 文档介绍:https://docs.yugabyte.com/preview/quick-start/install/linux/ ,或使用云上的 PG 数据库。

PG 数据库初始化

首先,可以通过该命令连接到 pg 数据库:

export PGPASSWORD='yugabyte'; psql -U yugabyte  -h localhost -d postgres

然后使用这条语句创建 test_lakesoul_meta 数据库:

create database test_lakesoul_meta;

然后可以通过该脚本初始化数据库和建表操作:

PGPASSWORD=yugabyte psql -h localhost -p 5433 -U yugabyte -f script/meta_init.sql

安装 Spark 环境

可以从 Spark 官网下载 Spark:https://spark.apache.org/downloads.html ,选择和 LakeSoul 对应的 spark 版本。

LakeSoul 发布 jar 包可以从 GitHub Releases 页面下载:https://github.com/meta-soul/LakeSoul/releases 。下载后请将所有 Jar 包放到 Spark 安装目录下的 jars 目录中:

tar xf lakesoul-2.0.1-spark-3.1.2-jars.tar.gz -C $SPARK_HOME/jars

启动 spark-shell 进行测试

首先为 LakeSoul 增加 PG 数据库配置

默认情况下,pg数据库连接到本地数据库,配置信息如下:

driver=org.postgresql.Driver,
jdbcUrl=jdbc:postgresql://127.0.0.1:5433/test_lakesoul_meta?stringtype=unspecified
username=yugabyte
password=yugabyte

也支持用户自定义pg数据库配置信息,这里需要用户在程序启动前增加一个环境变量 lakesoul_home,将配置文件信息引入进来。假如 PG 数据库配置信息文件路径名为:/opt/soft/pg.property,则在程序启动前需要添加这个环境变量:

export lakesoul_home=/opt/soft/pg.property

配置文件的内容格式如下:

lakesoul.pg.driver=org.postgresql.Driver
lakesoul.pg.url=jdbc:postgresql://127.0.0.1:5433/test_lakesoul_meta?stringtype=unspecified
lakesoul.pg.username=yugabyte
lakesoul.pg.password=yugabyte

用户可以在这里自定义数据库配置信息,这样用户自定义 PG DB 的配置信息就会在 Spark 作业中生效。

进入 Spark 安装目录,启动 spark 交互式 shell:

./bin/spark-shell --conf spark.sql.extensions=com.dmetasoul.lakesoul.sql.LakeSoulSparkSessionExtension  --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.lakesoul.catalog.LakeSoulCatalog

Spark 作业 LakeSoul 相关参数设置

可以将以下配置添加到 spark-defaults.conf 或者 Spark Session Builder 部分。

Key Value
spark.sql.extensions com.dmetasoul.lakesoul.sql.LakeSoulSparkSessionExtension
spark.sql.catalog.spark_catalog org.apache.spark.sql.lakesoul.catalog.LakeSoulCatalog