GBase 8s
其他
问答
spark适配gbase 8s遇到问题
发表于2025-01-04 15:34:20270次浏览4个评论
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】:GBase8sV8.8_TL_3.5.1_3X1_3_28a3a6
【操作系统】:CentOS Linux 7
【JDBC版本】:gbasedbtjdbc_3.5.1_3X2_1.jar
【问题描述】*:
使用sparksql Dataframe API查询gbase数据的返回结果不正确,大体业务逻辑如下:
存在一张 employees222表,包含字段employee_id,first_name,last_name ,均为varchar类型,包含2条数据。
1.使用jdbc demo查询表数据结果正确,截图如下:

核心代码如下(其他均默认):
//连接url
String url = "jdbc:gbasedbt-sqli://localhost:9088/gbasedb:GBASEDBTSERVER=gbaseserver;sqlmode=oracle;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;NEWCODESET=UTF8,utf8,57372;";
//驱动
Class.forName("com.gbasedbt.jdbc.Driver");
//执行查询 SQL
String query = "select * from gbasedb.employees222";
ResultSet resultSet = statement.executeQuery(query);2.使用sparksql Dataframe API查询结果错误(实际2条数据没出来,出来的都是字段名称),截图如下:

核心代码如下(其他均默认):
val sparkSession = SparkSession //spark版本3.2.1
.builder()
.master("local")
.appName("testGbase8sApp")
.getOrCreate()
val _jdbcUrl = "jdbc:gbasedbt-sqli://localhost:9088/gbasedb:GBASEDBTSERVER=gbaseserver;sqlmode=oracle;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;NEWCODESET=UTF8,utf8,57372;"
val sql = "select * from gbasedb.employees222"
val prop = new Properties()
prop.put("user", "gbasedbt")
prop.put("password", "93bee552f362e9f7b45094b428241db4")
prop.put("driver", "com.gbasedbt.jdbc.Driver")
val frame = sparkSession.read.jdbc(_jdbcUrl, s"($sql) alias", prop)
// val frame = sparkSession.read.jdbc(_jdbcUrl, "employees222", prop) //也可以用这个语句,结果一样
frame.printSchema()
frame.show()说明:spark的jdbc也是基于标准jdbc驱动接口实现的,其他数据库比如mysql、pg、oracle以及gbase 8a运行均没有问题。
我们公司正在测试并适配gbase,请问下gbase的大佬们帮忙看下是否是有解决办法?多谢
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526