Proceso detallado de Apache Doris C ++ UDF personalizado (1)

1. Información general

En versiones anteriores, Apache Doris proporcionaba UDF nativo en lenguaje C++, lo que resulta conveniente para que los usuarios escriban sus propias funciones personalizadas para cumplir con los requisitos de análisis de escenarios específicos. Sin embargo, debido al alto grado de acoplamiento entre la UDF nativa y el código Doris, cuando ocurre un error en la UDF, puede afectar la estabilidad del clúster y solo admite el lenguaje C++, existe un umbral alto para los usuarios que Están familiarizados con las pilas de tecnología de big data como Hive y Spark. La nueva versión 1.2.0 de la comunidad Apache Doris ha agregado funciones personalizadas del lenguaje Java y admite la escritura UDF/UDAF a través de Java, lo cual es conveniente para los usuarios en Java. ecosistema. Al mismo tiempo, a través de tecnologías como la memoria fuera del montón y Zero Copy, se ha mejorado enormemente la eficiencia del acceso a datos en varios idiomas.

La función UDF personalizada de C++ se aplica principalmente a escenarios donde Doris no tiene la capacidad de análisis requerida por los usuarios antes de la versión 1.2.0 . Por ejemplo, cuando Tableau se conecta directamente a la consulta de Doris a través de SQL solidificado, algunas funciones son incompatibles. Los usuarios pueden implementar funciones personalizadas según sus propias necesidades y registrarlas en Doris a través del marco UDF para ampliar las capacidades de Doris y resolver las necesidades de análisis de los usuarios.

inserte la descripción de la imagen aquí

2. Información medioambiental

2.1 Información de hardware

  1. Procesador : 4C
  2. Modelo de CPU : x64 (AVX2)
  3. Memoria : 10GB
  4. Disco duro : SSD de 66 GB

2.2 Información del software

  1. Versión de Linux : CentOS-7
  2. Versión de Apache Doris : versión 0.15

3. Preparación ambiental

Preparación del entorno de desarrollo C++.

3.1 Selección de IDE

código: bloques

bloques de código descargar

3.2 Descargar e instalar

Si está utilizando el sistema operativo Windows, se recomienda descargar el de la cuarta lista, porque viene con el compilador GCC/G++ y el depurador GDB. Por supuesto, también puede descargar MinGW usted mismo más tarde.

inserte la descripción de la imagen aquí

3.3 Hola mundo

Una vez montado el entorno, artesanía tradicional: Hola Mundo.

inserte la descripción de la imagen aquí

4. Proceso de función personalizada

Tome el código fuente oficial como ejemplo.

4.1 Preparación del código fuente

clon de git https://github.com/apache/incubator-doris/tree/branch-0.15/contrib/udf/src/udf_samples

inserte la descripción de la imagen aquí

4.2 Carga de archivos

Coloque el archivo en la ruta correspondiente según el documento oficial, preste atención a modificar el archivo CMakeLists.txt y concéntrese en el contenido del documento oficial.

├── thirdparty
│ │── include
│ │ └── udf.h
│ └── lib
│   └── libDorisUdf.a
└── udf_samples
  ├── CMakeLists.txt
  ├── uda_sample.cpp
  ├── uda_sample.h
  ├── udf_sample.cpp
  └── udf_sample.h

4.3 Compilar archivo UDF

#进入build文件夹
cd /opt/doris/udf/udf_samples/build

#生成Makefile
cmake ../

#生成对应动态库
make

4.4 Resultados de la compilación

├── thirdparty
├── udf_samples
  └── build
    └── src
      └── udf_samples
        ├── libudasample.so
        └── libudfsample.so

4.5 Construcción del servicio Nginx

Dado que el cliente doris necesita el servicio http para obtener la biblioteca tan dinámica, es necesario compilar nginx.

inserte la descripción de la imagen aquí

#安装部署nginx步骤省略
 server {
    
    
        listen       8088;
        server_name  localhost;

        location /udf {
    
    
          alias   /opt/doris/udf;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
    
    
         root   html;
        }
   }

4.6 Uso de funciones

4.6.1 Crear función UDF

CREATE FUNCTION 
MyADD00(INT,INT) 
RETURNS INT PROPERTIES ( 
"symbol" = "_ZN9doris_udf6AddUdfEPNS_15FunctionContextERKNS_6IntValES4_",
"object_file" = "http://10.192.119.68:8088/udf/udf_samples/build/src/udf_samples/libudfsample.so" );

4.6.2 Uso de funciones UDF

inserte la descripción de la imagen aquí

5. Preguntas frecuentes

5.1 Problemas de ROS

Los problemas de ROS ocurren durante la creación;
Nota : debe agregar un comando SET(CMAKE_CXX_FLAGS "-std=c++0x") al encabezado de CMakeFiles.txt para resolverlo.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

5.2 Problema de ruta

Ajuste las rutas relativas de CMakeFiles.txt a rutas absolutas o agregue variables de ruta.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Este es el final de la explicación detallada del proceso UDF de C ++ personalizado de Apache Doris. Si encuentra algún problema durante el proceso de revisión, deje un mensaje para comunicarse.

Supongo que te gusta

Origin blog.csdn.net/ith321/article/details/132162800
Recomendado
Clasificación