大数据分析——Apache Doris(五十九)

267 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情

 编译与安装

在 extension/spark-doris-connector/ 源码目录下执行:

sh build.sh

编译成功后,会在 output/ 目录下生成文件 doris-spark-1.0.0-SNAPSHOT.jar

将此文件复制到 Spark 的 ClassPath 中即可使用 Spark-Doris-Connector。

例如:

Local 模式运行的 Spark,将此文件放入 jars/ 文件夹下。

Yarn集群模式运行的Spark,则将此文件放入预部署包中。

 使用示例
SQL
CREATE TEMPORARY VIEW spark_dorisUSING dorisOPTIONS (  "table.identifier"="YOURDORISDATABASENAME.YOUR_DORIS_DATABASE_NAME.YOUR_DORIS_TABLE_NAME" ,  "fenodes"="YOURDORISFEHOSTNAME:YOUR_DORIS_FE_HOSTNAME:YOUR_DORIS_FE_RESFUL_PORT" ,  "user"="YOURDORISUSERNAME",  "password"="YOUR_DORIS_USERNAME" **,**  "password"**=**"YOUR_DORIS_PASSWORD"); SELECT  *****  FROM spark_doris ;
DataFrame****
val dorisSparkDF = spark . read . format ( "doris" )   . option ( "doris.table.identifier" ,  "YOURDORISDATABASENAME.YOUR_DORIS_DATABASE_NAME.YOUR_DORIS_TABLE_NAME" )****. option ( "doris.fenodes" ,  "YOURDORISFEHOSTNAME:YOUR_DORIS_FE_HOSTNAME:YOUR_DORIS_FE_RESFUL_PORT" )   . option ( "user" ,  "YOURDORISUSERNAME")  .option("password", "YOUR_DORIS_USERNAME" **)**   **.** **option** **(** "password" **,**  "YOUR_DORIS_PASSWORD" )   . load () dorisSparkDF . show ( 5 )****
RDD****
import org . apache . doris . spark . _val dorisSparkRDD = sc . dorisRDD (  tableIdentifier = Some ( "YOURDORISDATABASENAME.YOUR_DORIS_DATABASE_NAME.YOUR_DORIS_TABLE_NAME" ),  cfg = Some ( Map (    "doris.fenodes" ->  "YOURDORISFEHOSTNAME:YOUR_DORIS_FE_HOSTNAME:YOUR_DORIS_FE_RESFUL_PORT" ,    "doris.request.auth.user" ->  "YOURDORISUSERNAME",    "doris.request.auth.password" > "YOUR_DORIS_USERNAME" **,**    "doris.request.auth.password" **->**  "YOUR_DORIS_PASSWORD"   ))****)dorisSparkRDD . collect ()
 配置

l 通用配置项

KeyDefault ValueComment
doris.fenodes--Doris FE http 地址,支持多个地址,使用逗号分隔
doris.table.identifier--Doris 表名,如:db1.tbl1
doris.request.retries3向Doris发送请求的重试次数
doris.request.connect.timeout.ms30000向Doris发送请求的连接超时时间
doris.request.read.timeout.ms30000向Doris发送请求的读取超时时间
doris.request.query.timeout.s3600查询doris的超时时间,默认值为1小时,-1表示无超时限制
doris.request.tablet.sizeInteger.MAX_VALUE一个RDD Partition对应的Doris Tablet个数。 此数值设置越小,则会生成越多的Partition。从而提升Spark侧的并行度,但同时会对Doris造成更大的压力。
doris.batch.size1024一次从BE读取数据的最大行数。增大此数值可减少Spark与Doris之间建立连接的次数。 从而减轻网络延迟所带来的的额外时间开销。
doris.exec.mem.limit2147483648单个查询的内存限制。默认为 2GB,单位为字节
doris.deserialize.arrow.asyncfalse是否支持异步转换Arrow格式到spark-doris-connector迭代所需的RowBatch
doris.deserialize.queue.size64异步转换Arrow格式的内部处理队列,当doris.deserialize.arrow.async为true时生效

l SQL 和 Dataframe 专有配置

KeyDefault ValueComment
user--访问Doris的用户名
password--访问Doris的密码
doris.filter.query.in.max.count100谓词下推中,in表达式value列表元素最大数量。超过此数量,则in表达式条件过滤在Spark侧处理。