StarRocks Spark 连接器使用指南:从StarRocks高效读取数据

StarRocks Spark 连接器使用指南:从StarRocks高效读取数据

starrocks StarRocks是一个开源的分布式数据分析引擎,用于处理大规模数据查询和分析。 - 功能:分布式数据分析;大规模数据查询;数据分析;数据仓库。 - 特点:高性能;可扩展;易于使用;支持多种数据源。 starrocks 项目地址: https://gitcode.com/gh_mirrors/st/starrocks

概述

StarRocks Spark连接器是专为Apache Spark设计的连接器工具,它允许Spark应用程序直接从StarRocks数据仓库中读取数据。本文将详细介绍如何使用Spark连接器从StarRocks中读取数据,包括版本要求、参数配置、数据类型映射以及实际使用示例。

核心功能

StarRocks Spark连接器提供三种主要的数据读取方式:

  1. Spark SQL:创建临时视图直接查询StarRocks表
  2. Spark DataFrame:将StarRocks表映射为DataFrame进行操作
  3. Spark RDD:将StarRocks数据转换为RDD进行处理

其中,Spark DataFrame是最推荐的使用方式,因为它提供了更高级的API和更好的性能优化。

版本兼容性

| 连接器版本 | Spark支持版本 | StarRocks最低版本 | Java | Scala | |------------|--------------|-------------------|------|-------| | 1.1.2 | 3.2-3.5 | 2.5+ | 8 | 2.12 | | 1.1.1 | 3.2-3.4 | 2.5+ | 8 | 2.12 | | 1.1.0 | 3.2-3.4 | 2.5+ | 8 | 2.12 | | 1.0.0 | 3.x | 1.18+ | 8 | 2.12 | | 1.0.0 | 2.x | 1.18+ | 8 | 2.11 |

重要说明

  • 1.1.0及以上版本支持读写操作,而1.0.0仅支持读取
  • 不同版本间的参数和数据类型映射有差异,升级时需注意兼容性

获取连接器

1.1.0及以上版本

连接器JAR包命名格式: starrocks-spark-connector-${spark_version}_${scala_version}-${connector_version}.jar

获取方式:

  1. 下载预编译包
  2. 通过Maven添加依赖
  3. 手动编译源代码

1.0.0版本

获取方式:

  1. 下载预编译包
  2. 手动编译源代码

关键参数配置

通用参数

| 参数 | 默认值 | 说明 | |------|--------|------| | starrocks.fenodes | 无 | FE节点HTTP地址 | | starrocks.table.identifier | 无 | 表名(数据库.表) | | starrocks.filter.query | 无 | 数据过滤条件 |

Spark SQL/DataFrame专用参数

| 参数 | 默认值 | 说明 | |------|--------|------| | starrocks.fe.jdbc.url | 无 | FE的JDBC连接地址 | | starrocks.user | 无 | 用户名 | | starrocks.password | 无 | 密码 |

数据类型映射

1.1.0+版本映射关系

| StarRocks类型 | Spark类型 | |--------------|-----------| | BOOLEAN | BooleanType | | INT | IntegerType | | BIGINT | LongType | | FLOAT | FloatType | | DOUBLE | DoubleType | | DATE | DateType | | DATETIME | TimestampType |

实战示例

准备测试数据

  1. 创建测试表:
CREATE TABLE `score_board` (
    `id` int(11) NOT NULL,
    `name` varchar(65533) NULL DEFAULT "",
    `score` int(11) NOT NULL DEFAULT "0"
)
PRIMARY KEY(`id`)
DISTRIBUTED BY HASH(`id`);
  1. 插入示例数据:
INSERT INTO score_board VALUES
(1, 'Bob', 21), (2, 'Stan', 21), ...;

Spark SQL读取示例

// 创建临时视图
spark-sql> CREATE TEMPORARY VIEW spark_starrocks
           USING starrocks
           OPTIONS (
               "starrocks.table.identifier" = "test.score_board",
               "starrocks.fe.http.url" = "fe_host:8030",
               "starrocks.fe.jdbc.url" = "jdbc:mysql://fe_host:9030",
               "starrocks.user" = "root",
               "starrocks.password" = ""
           );

// 查询数据
spark-sql> SELECT * FROM spark_starrocks;

Spark DataFrame读取示例

// 创建DataFrame
val df = spark.read.format("starrocks")
    .option("starrocks.table.identifier", "test.score_board")
    .option("starrocks.fe.http.url", "fe_host:8030")
    .option("starrocks.fe.jdbc.url", "jdbc:mysql://fe_host:9030")
    .option("starrocks.user", "root")
    .option("starrocks.password", "")
    .load()

// 显示数据
df.show(10)

性能优化建议

  1. 数据过滤下推:尽量在StarRocks端完成数据过滤,减少传输量
  2. 合理设置分区:通过starrocks.request.tablet.size控制分区数量
  3. 批量读取:适当增大starrocks.batch.size减少网络开销
  4. 异步转换:启用starrocks.deserialize.arrow.async提升性能

常见问题

  1. 权限问题:确保用户有SELECT权限
  2. 网络连接:检查FE和BE节点的端口可访问性
  3. 版本兼容性:注意Spark、Scala和连接器版本的匹配

通过本文介绍,您应该已经掌握了使用StarRocks Spark连接器从StarRocks中高效读取数据的方法。根据实际业务需求选择合适的读取方式,并合理配置参数,可以获得最佳的性能表现。

starrocks StarRocks是一个开源的分布式数据分析引擎,用于处理大规模数据查询和分析。 - 功能:分布式数据分析;大规模数据查询;数据分析;数据仓库。 - 特点:高性能;可扩展;易于使用;支持多种数据源。 starrocks 项目地址: https://gitcode.com/gh_mirrors/st/starrocks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葛习可Mona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值