Spark_SparkSql写入Oracle_Undefined function.....将长字符串写入Oracle中方法..

在使用Spark编写代码将读库处理然后写入Oracle中遇到了诸多小bug,很磨人,好在解决了。shit!!

实测1:TO_CLOB(a3)

代码样例

sql 复制代码
--这是一个sparksql写入hive的一个小逻辑,我脱敏了噻
SELECT
a1,
a2,
TO_CLOB(a3) AS clob_data,
TO_DATE(a4) AS time
FROM
table1
WHERE
a2 >= 3;

首先是这个坑,本来以为和DATE日期类型转换一样,但是这段代码中,我在sparksql写入oracle时报错如下

bug描述

sql 复制代码
......undefined function: 'TO_CLOB',
this funtion is nether a registered temporary nor a permanent funvtion 
registered in the database 'default'..巴拉巴拉

说是我TO_CLOB函数是Oracle特有的函数,在Spark SQL中并不支持,这是确实啊,方法用错了,人家不支持。。。

解决方法

要是写入Oracle的CLOB字段,得用CAST函数将字段转换为String类型。。。这样 我测过了,没问题。

sql 复制代码
SELECT 
    a1,
    a2,
    CAST(a3 AS STRING) AS clob_data,
    TO_DATE(a4) AS time
FROM 
    table1
WHERE
    a2 >= 3;


/**
 * @author:Matrix70,https://blog.csdn.net/qq_52128187?type=blog,ok,就是我
 */

吐槽 :

由于爷们对PLSQL操作看表的不熟悉,导致了一个大乌龙!!太抽象了!具体如下

我以为这个字段内容为<CLOB>的我程序没写进去,我心里想怎么会是这个字段内容呢?不应该是一大长串数据么?

然后我就尝试了n种转换方式,得到的结果还是这个,后来我去问同事这个长字符串写入Oracle的方法,他说转换成text,我说mysql的才是转换成 text,这个坑踩过,他又说转换成long类型 ,Oracle没有这个类型吧,给我看了一下数据,他那个数据列也是<LONG>,我看他这么操作的!!

点了一下<LONG>后面的三个点,一下子他那边的数据出来了。心里保持疑问,我快速回到工位 点了一下<CLOB>后面的点,太抽象了,数据出来了!我整了半天以为是自己代码出问题了。。。好在跑出来了。记录一下这个坑。可能以后也不会忘记了 。

sql 复制代码
<CLOB>

另一种方法转换:

Scala 复制代码
import org.apache.spark.sql.types._
import org.apache.spark.sql.functions._

val customClobType = DataTypes.createStructField("clob_data", DataTypes.StringType, true)

val result = table1.select(
  col("a1"),
  col("a2"),
  struct(col("a3").alias("clob_data")).cast(customClobType).getField("clob_data").alias("clob_data"),
  to_date(col("a4")).alias("time")
).where(col("a2") >= 3)

ok,

相关推荐
RunningShare24 分钟前
从“国庆景区人山人海”看大数据处理中的“数据倾斜”难题
大数据·flink
Hello.Reader1 小时前
Flink 执行模式在 STREAMING 与 BATCH 之间做出正确选择
大数据·flink·batch
养生技术人3 小时前
Oracle OCP认证考试题目详解082系列第53题
数据库·sql·oracle·database·开闭原则·ocp
文火冰糖的硅基工坊4 小时前
《投资-99》价值投资者的认知升级与交易规则重构 - 什么是周期性股票?有哪些周期性股票?不同周期性股票的周期多少?周期性股票的买入和卖出的特点?
大数据·人工智能·重构·架构·投资·投机
Elastic 中国社区官方博客4 小时前
Elasticsearch:使用推理端点及语义搜索演示
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
数据智能老司机5 小时前
数据工程设计模式——冷热数据存储
大数据·设计模式·架构
Hello.Reader8 小时前
Flink 连接器与格式thin/uber 制品、打包策略与上线清单
大数据·flink
隐语SecretFlow8 小时前
【隐私计算科普】如何实现可证明安全?
大数据·开源·边缘计算
lisw059 小时前
AIoT(人工智能物联网):融合范式下的技术演进、系统架构与产业变革
大数据·人工智能·物联网·机器学习·软件工程
mtouch3339 小时前
GIS+VR地理信息虚拟现实XR MR AR
大数据·人工智能·ar·无人机·xr·vr·mr