关于spark同步hive的geometry数据至pg数据库的geometry类型字段中

spark可以将hive的数据直接同步至pg的表中,但是如果想让一个geometry格式的字符串同步至pg的geometry类型的字段中,是无法直接插入的,
会抛出想要一个geometry类型但是给了varchar类型的错误

尝试了如下几种方法:
①将geometryJSON格式的字符串变为WKT格式的字符串插入
这么做的原因是在pg数据库手动插入数据
例如:
insert into table (geometry) values(‘Point (112.113232 34.342344)’)
是可以直接插入到geometry字段且自动转为WKB格式,
但是在通过spark插入WKT格式还是报错,即使我看了spark底层也是拼接成
insert into table (geometry) values(‘Point (112.113232 34.342344)’)
可是还是无法插入

②在第一种无法实现的情况下,选择使用geospark来完成,通过导入geospark的jar包,使用st_geometryFromWKT函数将转为WKT格式的字符串转为geometry类型,想着这下字段为geometry格式了总能插入到Pg数据库中了吧,结果还真插入不进去,因为spark.write.jdbc通过jdbc方法去写入的时候jdbc底层并不支持geometry对象

③在前面两种方法都无法实现的情况下,转换思路,既然无法插入,那就先插入到geometry字段为varchar类型的中间表中,再通过
insert into table2 select * from mid table1的方法转一下来解决,结果报出varchar类型无法转换为geometry类型,无语

④经过不断尝试,最终通过直接连接pg数据库辅助解决

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值