文章讨论了如何将Oracle中的replace函数,转换为Hive的regexp_replace函数进行字符串替换。在Oracle中,replace函数接受2个参数,而在Hive中需要3个参数,第三个参数可设为空字符串。同时,文章还提到了在使用concat函数时,处理转义符需要使用6个反斜杠进行转义。
摘要由CSDN通过智能技术生成
oracle2个参数的replace转换成hive实现
replace(abcedf, 'edf') = 'efls'
regexp_replace(abcedf, 'edf','') ='efls'
总结:oracle支持传入2个参数,但是hive支持传入3个参数,那么可以将第三个参数写为空字符串
转义符处理
concat('STAVAL','\\\\\\', substr(acctte_code, 1, 3))
对于concat函数中加“\”分隔符需要使用6转义符
searchvalue
必须。规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
newvalue
必需。一个字符串值。规定了替换文本或生成替换文本的函数。
String
一个...
size(列名):求array、map长度
map_keys(列名):拿map里所有key值 , map_values 拿所有value值
array_contains(列名,'足球'):查看array中是否包含
sort_array(列名):对array排序
类型转换函数
cast(列名as int):列转为int类型
日期函数
from_unixtime(1632384337,'yyyy-MM-dd HH:mm:ss'), --时间戳转年月日
unix_timesta..
A <=> B
所有原始类型
对于非空操作数,使用EQUAL(=)运算符返回相同的结果,但如果两个均为NULL,则返回TRUE,如果其中之一为NULL,则返回FALSE。(从0.9.0版开始。)
所有原始类型
```java
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
import org.apache.hadoop.io.Text;
import java.util.ArrayList;
public class MyUDTF extends GenericUDTF {
@Override
public StructObjectInspector initialize(ObjectInspector[] args) throws UDFArgumentException {
// 检查参数个数是否正确
if (args.length != 2) {
throw new UDFArgumentLengthException("MyUDTF函数需要传入两个参数");
// 检查参数类型是否正确
if (!args[0].getCategory().equals(ObjectInspector.Category.PRIMITIVE)
|| !args[1].getCategory().equals(ObjectInspector.Category.PRIMITIVE)) {
throw new UDFArgumentException("MyUDTF函数需要传入两个原始类型参数");
// 定义输出列名和类型
ArrayList<String> fieldNames = new ArrayList<String>();
ArrayList<ObjectInspector> fieldOIs = new ArrayList<ObjectInspector>();
fieldNames.add("output_col1");
fieldNames.add("output_col2");
fieldOIs.add(args[0]);
fieldOIs.add(args[1]);
return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames, fieldOIs);
@Override
public void process(Object[] args) throws HiveException {
Text input1 = (Text) args[0];
Text input2 = (Text) args[1];
// 处理逻辑
String output1 = input1.toString() + "_processed";
String output2 = input2.toString() + "_processed";
// 输出结果
forward(new Object[]{output1, output2});
@Override
public void close() throws HiveException {
// 关闭操作
这是一个简单的示例代码,你可以根据自己的需求进行修改和补充。在使用过程中,需要将该代码编译成 jar 包,并在 Hive 中注册该 UDTF 函数,才能够使用。
Hive beeline客户端启动报错Could not open client transport with JDBC Uri: jdbc:hive2://hadoop101:10000: Fail
Exception in thread “main“ java.net.ConnectException: Call From hadoop101/192.168.10.12 to hadoop101
Exception in thread “main“ java.net.ConnectException: Call From hadoop101/192.168.10.12 to hadoop101
使用SparkStreaming时Jackson报错java lang ClassNotFoundException com fasterxml jackson core
Exception in thread “main“ java.net.ConnectException: Call From hadoop101/192.168.10.12 to hadoop101
Pluto538: