表格存储(TableStore)是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。

这里主要介绍通过快速开始使用Spark对接TableStore数据表的使用方法。

前置条件

  1. TableStore 实例已创建。本例中TableStore的实例区域为“华南1(深圳)”,名称为:test-store,实例的网络类型为VPC且VPC和Spark集群VPC保持一致。通过如下方法查看Spark集群VPC信息:进入Spark分析集群页面,选择数据库连接 > 连接信息,查看Spark集群的VPC ID信息。如下图:
  2. TableStore 表已创建,本例中使用的TableStore的表名为:mysampletable,创建方法参考:表格存储命令行工具Tablestore CLI
#创建一个全新的表
ts> create -t mysampletable --pk '[{"C":"uid","t":"string"}, {"c":"pid","t":"integer"}]' --ttl 864000 --version 1
'''
创建一张表:mysampletable ,
并指定两列主键,分别是uid(string)和pid(integer)
设置数据声明周期为 864000秒(10天),版本数为1
'''

# 使用该表
ts> use -t mysampletable

# 插入数据
ts> put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen1"}, {"c":"country", "v":"china"}]'
ts> put --pk '["86", 6772]' --attr '[{"c":"name", "v":"redchen2"}, {"c":"country", "v":"china"}]'
ts> put --pk '["86", 6773]' --attr '[{"c":"name", "v":"redchen3"}, {"c":"country", "v":"china"}]'
ts> put --pk '["86", 6774]' --attr '[{"c":"name", "v":"redchen4"}, {"c":"country", "v":"china"}]'

使用“数据工作台”>“作业管理”运行样例

步骤 1:通过“资源管理”上传样例代码Jar包

下载样例代码jar包“spark-examples-0.0.1-SNAPSHOT-shaded.jar”到以及依赖jar包本地目录。

wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_example/spark-examples-0.0.1-SNAPSHOT-shaded.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/spark-tablestore-4.11.0_2.3.2-1.0-SNAPSHOT.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/tablestore-4.11.0-jar-with-dependencies.jar

在“数据工作台”>“资源管理”中添加文件夹“spark_on_tablestore”。上传下载的三个jar包到此文件夹。如下图:

步骤 2:通过“作业管理”创建并编辑作业内容

数据工作台 > 作业管理中创建Spark作业,作业内容如下:

--class com.aliyun.spark.tablestore.JavaSparkOnTableStore
--jars /spark_on_tablestore/spark-tablestore-4.11.0_2.3.2-1.0-SNAPSHOT.jar,/spark_on_tablestore/tablestore-4.11.0-jar-with-dependencies.jar
--driver-memory 1G 
--driver-cores 1
--executor-cores 2
--executor-memory 2G
--num-executors 2
--name spark_on_loghub 
/spark_on_tablestore/spark-examples-0.0.1-SNAPSHOT.jar
http://shenzehn01-test-store.cn-shenzhen.vpc.ots.aliyuncs.com xxx1 xxx2
test-store mysampletable

作业内容参数说明:

参数 说明
xxx1 xxx2 分别为具备访问TableStore权限的AccessKey ID 和AccessKeySecret。
http://shenzehn01-test-store.cn-shenzhen.vpc.ots.aliyuncs.com TableStore的VPC访问地址。
test-store mysampletable 分别为TableStore的实例名称和表名。

作业内容如下图:

步骤 3:通过“作业管理”运行作业并查看结果

作业编辑完成后单击运行,选择Spark集群。运行状态会在下侧显示:

运行成功后单击YarnUI,翻到最后看到类似如下结果表明Spark读取TableStore成功。如下:

TOTAL: 4

小结