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

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

实测1:TO_CLOB(a3)

代码样例

--这是一个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描述

......undefined function: 'TO_CLOG',
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类型。。。这样 我测过了,没问题。

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

吐槽 :

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

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

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

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

<CLOB>

另一种方法转换:

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,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/532762.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外包干了15天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…

海外软文通稿代发 - 大舍传媒

引言 在当今高度信息化的时代&#xff0c;企业和个人品牌形象的塑造与传播变得越来越重要。为了在国际舞台上获得更大的竞争优势&#xff0c;许多企业和品牌纷纷将视线投向了国外市场。而在这个过程中&#xff0c;专业的软文通稿代发服务成为了他们的得力助手。本文将向您介绍…

恒创科技:香港服务器CPU核心数如何选?越多越好吗?

​  谈到 CPU“核心”是完成所有处理的组件&#xff0c;程序能否顺利运行的第一因素是你有多少个核心。但由于不同的计算任务占用不同的资源&#xff0c;所以如果您打算简单地创建小型网站或者其他请求处理数据也不高的业务&#xff0c;那么您的基本型号应该包含 1、2 核已经…

云计算重要概念之:虚拟机、网卡、交换机、路由器、防火墙

一、虚拟机 (Virtual Machine, VM) 1.主流的虚拟化软件&#xff1a; 虚拟化软件通过在单个物理硬件上创建和管理多个虚拟环境&#xff08;虚拟机&#xff09;&#xff0c;实现资源的高效利用、灵活部署、隔离安全以及便捷管理&#xff0c;是构建云计算和现代化数据中心的核心…

【电控笔记4】拉普拉斯-传递函数-pid

数据标幺化 拉普拉斯变换 欧拉公式 常见s变换 s变换性质 pid分析 p控制&#xff0c;存在稳态误差 可以求出p的取值范围p>-1&#xff0c;否则发散 pi消除稳态误差 把kp换成Gs 只用pi控制&#xff0c;不加微分的原因&#xff1a; 微分之后&#xff0c;噪声增大高频噪声频率…

【力扣】104. 二叉树的最大深度、111. 二叉树的最小深度

104. 二叉树的最大深度 题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输…

机器学习与自主系统

Darpa人工智能中有两个重要方向&#xff0c;一是机器学习&#xff0c;另一个就是自主系统。但真实博弈环境下&#xff0c;更重要的是人机融合体系… 机器学习是一种人工智能的分支&#xff0c;通过使用统计学和数学模型来让计算机系统学习和改进其性能。它可以让计算机从数据中…

FreeRTOS创建第一个程序

使用freeRTOS创建任务时使用如下函数 函数的参数 创建一个FreeRTOS任务点亮led灯实现led灯500毫秒翻转一次 具体的代码实现 #include "stm32f10x.h" // Device header #include "Delay.h" #include "freeRTOS.h" #include &quo…

【bash】linux使用环境变量拼接字符串错误

有如下脚本init-env.sh #!/bin/bash export HADOOP_HOME/opt/hadoop export HADOOP_CONF$HADOOP_HOME/conf执行结果&#xff1a; source init-env.sh echo $HADOOP_CONF_DIR # 得到结果&#xff1a;conf/hadoop&#xff0c;预期因该是/opt/hadoop/conf原因就是linux下使用了w…

零售EDI:Princess Auto EDI对接

Princess Auto 是一家加拿大零售连锁店&#xff0c;专门从事农场、工业、车库、液压和剩余物品的销售。 Princess Auto 总部位于马尼托巴省温尼伯&#xff0c;截至 2024 年 1 月在 10 个省份拥有并经营 55 家商店以及三个配送中心。各种商品均以其“Powerfist”和“Pro.Point”…

Qt 多窗体

前言 在 Qt编程中经常会遇到要在多个界面之间切换的情况&#xff0c;如从登录界面跳转到主界面&#xff0c;从主界面跳转到设置界面&#xff0c;再返回到主界面。我们将会用一个简单的示例来实现多窗体功能。 登录窗口 创建基类为QMainWindow&#xff0c;类名为LoginWin。再使用…

苹果开发者后台添加udid后,xcode中 Devices 数量没有更新问题

删除 文件夹 /Users/…/Library/MobileDevice/Provisioning Profiles 如何打开&#xff1a;https://zhuanlan.zhihu.com/p/563928113 回到Xcode刷新包名下面的警告验证&#xff08;可能需要翻墙&#xff09; 完毕&#xff01;

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中&#xff0c;关键词布局是一个至关重要的环节。首先&#xff0c;我们需要确定核心关键词&#xff0c;然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后&#xff0c;接下来的任务就是对这些扩展后的关键词进行筛选。那么&#xff0c;如何进行有效的…

WordPress LayerSlider插件SQL注入漏洞复现(CVE-2024-2879)

0x01 产品简介 WordPress插件LayerSlider是一款可视化网页内容编辑器、图形设计软件和数字视觉效果应用程序,全球活跃安装量超过 1,000,000 次。 0x02 漏洞概述 WordPress LayerSlider插件版本7.9.11 – 7.10.0中,由于对用户提供的参数转义不充分以及缺少wpdb::prepare(),…

AI大模型之ChatGPT科普(深度好文)

目录 训练ChatGPT分几步&#xff1f; 如何炼成ChatGPT&#xff1f; 如何微调ChatGPT? 如何强化ChatGPT? 如何调教ChatGPT? AI思维链是什么&#xff1f; GPT背后的黑科技Transformer是什么&#xff1f; Transformer在计算机视觉上CV最佳作品&#xff1f; ChatGPT是人…

[leetcode]remove-duplicates-from-sorted-list

. - 力扣&#xff08;LeetCode&#xff09; 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&…

LeetCode-热题100:148. 排序链表

题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a; head [4,2,1,3] 输出&#xff1a; [1,2,3,4] 示例 2&#xff1a; 输入&#xff1a; head [-1,5,3,4,0] 输出&#xff1a; [-1,0,3,4,5] 示例…

2017NOIP普及组真题 4. 跳房子

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1417\ 核心思想 首先、本题中提到 “ 至少 要花多少金币改造机器人&#xff0c;能获得 至少 k分 ”。看到这样的话语&#xff0c;基本可以考虑要使用 二分答案。 那么&#xff0c;本题中…

Java快速入门系列-7(测试与调试)

第七章:测试与调试 第7章:测试与调试7.1 单元测试(JUnit)7.1.1 为什么要进行单元测试7.1.2 JUnit基础7.1.3 断言7.1.4 测试套件7.2 集成测试与系统测试7.2.1 集成测试7.2.2 系统测试7.3 调试技巧与工具7.3.1 断点7.3.2 单步执行7.3.3 变量检查7.3.4 条件断点7.3.5 日志记录…

手动实现简易版RPC(一)

手动实现简易版RPC(一) 前言 什么是RPC&#xff1f;它的原理是什么&#xff1f;它有什么特点&#xff1f;如果让你实现一个RPC框架&#xff0c;你会如何是实现&#xff1f;带着这些问题&#xff0c;开始今天的学习。 本文主要介绍RPC概述以及一些关于RPC的知识&#xff0c;为…