通过在E-MapReduce集群中使用Spark SQL访问表格存储。对于批计算,Tablestore on Spark提供索引选择、分区裁剪、Projection列和Filter下推、动态指定分区大小等功能,利用表格存储的全局二级索引或者多元索引可以加速查询。
前提条件已创建E-MapReduce Hadoop集群。具体操作,请参见
创建集群时,请确保打开挂载公网开关,将集群挂载到公网,用于Shell远程登录服务器。
说明
本文使用Shell命令演示,如果需要使用E-MapReduce的图形化页面进行数据开发。具体操作,请参见
Spark连接表格存储数据表和全局二级索引
Spark连接到表格存储数据表和全局二级索引后,通过Spark外表查询数据时,系统会根据查询条件中设置的列条件自动选择索引表进行查询。在表格存储侧创建数据表或全局二级索引。创建表格存储的数据表。具体操作,请参见
本示例中数据表名称为tpch_lineitem_perf,主键列为l_orderkey(LONG类型)、l_linenumber(LONG类型),属性列分别为l_comment(STRING类型)、l_commitdate(STRING类型)、l_discount(DOUBLE类型)、l_extendedprice(DOUBLE类型)、l_linestatus(STRING类型)、l_partkey(LONG类型)、l_quantity(DOUBLE类型)、l_receiptdate(STRING类型)等14列,数据条数为384016850,数据样例如下图所示。
(可选)在数据表上创建全局二级索引。具体操作,请参见
说明
当查询条件中需要使用数据表的非主键列,建议创建全局二级索引加速查询。
全局二级索引支持在指定列上建立索引,生成的索引表中数据按指定的索引列进行排序,数据表的每一个数据写入都将自动以异步方式同步到索引表。
在EMR集群侧创建Spark外表。登录EMR Header服务器。
执行如下命令启动spark-sql命令行,用于Spark外表创建和后续的SQL实战操作。
其中Spark的标准启动参数为--num-executors 32 --executor-memory 2g --executor-cores 2,可以根据具体的集群配置进行自定义调整。表示上传jar包的版本信息,请根据实际填写,例如2.1.0-SNAPSHOT。spark-sql --jars emr-datasources_shaded_2.11-.jar --master yarn --num-executors 32 --executor-memory 2g --executor-cores 2
创建Spark外表同时连接全局二级索引。参数参数说明endpoint表格存储实例访问地址,EMR集群中使用VPC地址。
access.key.id阿里云账号的AccessKey ID。
access.key.secret阿里