1、版本介绍:
- doris版本: 1.2.8
- Spark Connector for Apache Doris 版本: spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOT
- spark版本:spark-3.3.1
2、Spark Doris Connector
Spark Doris Connector - Apache Doris
目前最新发布版本: Release Apache Doris Spark Connector 1.3.0 Release · apache/doris-spark-connector · GitHub
2.1、Spark Doris Connector概述
Spark Doris Connector 可以支持通过 Spark 读取 Doris 中存储的数据,也支持通过Spark写入数据到Doris。
代码库地址:GitHub - apache/doris-spark-connector: Spark Connector for Apache Doris
- 支持从
Doris
中读取数据 - 支持
Spark DataFrame
批量/流式 写入Doris
- 可以将
Doris
表映射为DataFrame
或者RDD
,推荐使用DataFrame
。 - 支持在
Doris
端完成数据过滤,减少数据传输量。
2.2、Doris 和 Spark 列类型映射关系
Doris TypeSpark TypeNULL_TYPEDataTypes.NullTypeBOOLEANDataTypes.BooleanTypeTINYINTDataTypes.ByteTypeSMALLINTDataTypes.ShortTypeINTDataTypes.IntegerTypeBIGINTDataTypes.LongTypeFLOATDataTypes.FloatTypeDOUBLEDataTypes.DoubleTypeDATEDataTypes.DateTypeDATETIMEDataTypes.StringType1DECIMALDecimalTypeCHARDataTypes.StringTypeLARGEINTDecimalTypeVARCHARDataTypes.StringTypeTIMEDataTypes.DoubleTypeHLLUnsupported datatypeBitmapUnsupported datatype
- 注:Connector 中,将
DATETIME
映射为String
。由于Doris
底层存储引擎处理逻辑,直接使用时间类型时,覆盖的时间范围无法满足需求。所以使用String
类型直接返回对应的时间可读文本。
3、doris所有所有类型测试与报错解决方案
3.1、doris建表并插入数据语句如下:
CREATE TABLE spark_connector_test_decimal_v1 (
c1 int NOT NULL,
c2 VARCHAR(25) NOT NULL,
c3 VARCHAR(152),
c4 boolean,
c5 tinyint,
c6 smallint,
c7 bigint,
c8 float,
c9 double,
c10 datev2,
c11 datetime,
c12 char,
c13 largeint,
c14 varchar,
c15 decimalv3(15, 5)
)
DUPLICATE KEY(c1)
COMMENT "OLAP"
DISTRIBUTED BY HASH(c1) BUCKETS 1
PROPERTIES (
"replication_num" = "1"
);
insert into spark_connector_test_decimal_v1 values(10000,'aaa','abc',true, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10000,'aaa','abc',true, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10001,'aaa','abc',false, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10002,'aaa','abc',True, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
insert into spark_connector_test_decimal_v1 values(10003,'aaa','abc',False, 100, 3000, 100000, 1234.567, 12345.678, '2022-12-01','2022-12-01 12:00:00', 'a', 200000, 'g', 1000.12345);
3.2、spark-sql中创建临时视图,读取数据
spark-sql 中建表:
CREATE
TEMPORARY VIEW spark_connector_test_decimal_v1
USING doris
OPTIONS(
"table.identifier"="ods.spark_connector_test_decimal_v1",
"fenodes"="172.xxx.99.199:8030",
"user"="syncxxx",
"password"="xxxxx"
);
select * from spark_connector_test_decimal_v1;
版权归原作者 Data_IT_Farmer 所有, 如有侵权,请联系我们删除。