Utilice la conexión MaxCompute para acceder a la práctica de desarrollo de Hologres

Introducción: muchos clientes utilizan la solución de integración de MaxCompute y Hologres para cumplir con múltiples escenarios comerciales, como análisis fuera de línea a gran escala, análisis de operaciones en tiempo real, consultas interactivas y servicio en línea. MaxCompute y Hologres se apoyan mutuamente para leer y escribir los datos de los demás, lo que puede eliminar la redundancia de datos innecesaria, formar una jerarquía de datos eficaz y admitir vistas unificadas fuera de línea / en tiempo real y análisis conjuntos. Este artículo se centra en la práctica de desarrollo de cómo MaxCompute accede a los datos de Hologres.

Utilice la conexión MaxCompute para acceder a la práctica de desarrollo de Hologres

Prefacio

MaxCompute (Big Data Computing Service) es Alibaba Cloud Serverless, un servicio de almacenamiento de datos en la nube totalmente administrado que admite múltiples escenarios de análisis, y Hologres (Análisis interactivo) es el producto de análisis interactivo en tiempo real de Alibaba Cloud. Hologres tiene la capacidad de escribir y consultar datos en tiempo real con alta concurrencia. También admite la capacidad de acelerar el análisis de datos MaxCompute con alto rendimiento sin migración de datos, análisis federado de datos en tiempo real de Hologres y datos fuera de línea MaxCompute, para lograr Soluciones de productos de almacenamiento de datos integrados fuera de línea y en tiempo real. Muchos clientes utilizan la solución de integración de MaxCompute y Hologres para cumplir con múltiples escenarios comerciales, como análisis fuera de línea a gran escala, análisis de operaciones en tiempo real, consultas interactivas y servicio en línea.

Los documentos oficiales de los productos Hologres también brindan descripciones de escenarios de aplicación típicos de "Análisis federal de datos en tiempo real y datos fuera de línea" . Como se muestra abajo:

image.png

Desde el enlace de intercambio de datos entre MaxCompute y Hologres, hay dos partes:

  • Hologres puede "leer" MaxCompute directamente: Hologres utiliza la sintaxis IMPORT FOREIGN SCHEMA para crear apariencias MaxCompute en lotes y analizar los datos almacenados en MaxCompute en el lado de Hologres con aceleración de alto rendimiento. Por ejemplo, Hologres se puede utilizar para el consumo en tiempo real en el mismo día y casi 30 días en MaxCompute Análisis comparativo de los datos de consumo, para operaciones específicas consultar el contenido relevante de la documentación del producto Hologres .
  • MaxCompute puede "leer" Hologres directamente: los datos en tiempo real del día ingresan a Hologres, y el análisis de la operación en tiempo real se realiza en el lado de Hologres. En T + 1, la lógica ETL de MaxCompute y el procesamiento del modelo de datos deben utilizar los nuevos datos del día. En este momento, los datos de Hologres se utilizan como la capa ODS del almacén de datos de MaxCompute. MaxCompute no necesita importar datos y " leer directamente "la tabla de datos correspondiente a Hologres. Procesamiento completo del modelo de datos incrementales + completos.

Este artículo presentará principalmente la práctica de desarrollo de la fuente de datos MaxCompute de lectura directa de Hologres bajo el esquema combinado de MaxCompute y Holgres.

El acceso de MaxCompute a la fuente de datos de Hologres incluye los dos métodos siguientes:

  • MaxCompute SQL accede a la fuente de datos de Hologres en forma de tabla externa
  • MaxCompute Spark accede directamente a la fuente de datos de Hologres en modo JDBC

 

MaxCompute SQL tabla externa leer y escribir Hologres

Para obtener más información, consulte la sección Documentación del producto MaxCompute - Tabla externa de Hologres La siguiente es sólo una breve introducción.

Primero, cree la tabla externa de Hologres en MaxCompute.

Al crear una tabla externa de Hologres en MaxCompute, debe especificar StorageHandler en la declaración DDL de creación de la tabla y configurar los parámetros del mecanismo de conducción JDBC para acceder a la fuente de datos MC-Hologres. La declaración de creación de tablas se define de la siguiente manera:

crear una tabla externa 
  <table_name > ( <col1_name> <data_type>, 
  <col2_name> <data_type>, 
  ...... 
) 
almacenada por '<com.aliyun.odps.jdbc.JdbcStorageHandler>' 
location '<jdbc: postgresql: // <accessid>: <accesskey> @ <endpoint>: <port> / <database>? currentSchema = <schema> & preferQueryMode = simple & table = <holo_table_name> /> ' 
tblproperties ( 
  ' mcfed.mapreduce.jdbc.driver.class ' = 'org.postgresql.Driver', 
  'odps.federation.jdbc.target.db.type' = 'holo', 
  ['odps.federation.jdbc.colmapping' = '<col1: column1, col2: column2, col3: columna3, ...> '] 
);

 

Los ejemplos son los siguientes:

crea una tabla externa si no existe my_table_holo_jdbc 
( 
 id bigint, 
 name string 
) 
almacenado por 'com.aliyun.odps.jdbc.JdbcStorageHandler' 
LOCATION 'jdbc: postgresql: // LTAI4FzxmCwzb4BJqFce ****: hKZMEFRjd5prep875 -oew210utf003-cn-hangzhou-internal.MC-Hologres.aliyuncs.com:80/mc_test?currentSchema=public&preferQueryMode=simple&useSSL=false&table=holo/ ' 
TBLPROPERTIES ( 
  ' mcfed.mapreduce.jdlass '= .Driver ', 
  ' odps.federation.jdbc.target.db.type '=' holo ', 
  ' odps.federation.jdbc.colmapping '=' id: id, name: name ' 
);

La tabla externa de Hologres creada se asignará a una tabla en la base de datos bajo la instancia de Hologres especificada.

En segundo lugar, una vez completada la creación, utilice MaxCompute SQL para consultar la tabla externa para obtener los datos de la tabla Hologres.

Los ejemplos de comandos son los siguientes:

 

--Acceso a la tabla externa de MC-Hologres necesita agregar los siguientes atributos. 
set odps.sql.split.hive.bridge = true; 
set odps.sql.hive.compatible = true; 
--Query MC-Hologres datos de la tabla externa. 
seleccione * de my_table_holo_jdbc límite 10;

MaxCompute SQL puede escribir datos en tablas externas de Hologres al mismo tiempo, de modo que los datos de consumo procesados ​​por MaxCompute se pueden importar directamente a Hologres. Con la ayuda del motor de análisis de almacenamiento de alto rendimiento de Hologres, se puede obtener la mejor experiencia de análisis.

--Acceso a la tabla externa de MC-Hologres necesita agregar los siguientes atributos. 
set odps.sql.split.hive.bridge = true; 
set odps.sql.hive.compatible = true; 
--Insertar datos en la tabla externa de MC-Hologres. 
insertar en my_table_holo_jdbc valores (12, 'alice'); 
--Query MC-Hologres datos de la tabla externa. 
seleccione * de my_table_holo_jdbc;

 

MaxCompute Spark usa la conexión JDBC para acceder a Hologres

MaxCompute está integrado de forma nativa con el motor de análisis de Apache Spark. Con Spark, no solo se pueden analizar directamente los datos de MaxCompute, sino que MaxCompute Spark también puede usar JDBC para conectarse a la fuente de datos de Hologres. Los usuarios que están acostumbrados a usar Spark pueden implementar una lógica empresarial más flexible en el código Spark.

El autor utiliza los siguientes tres modos de envío para verificar cómo Spark accede a Hologres. Para obtener detalles sobre los modos admitidos por MaxCompute Spark, consulte la documentación oficial de los productos MaxCompute Este artículo no se expandirá.

Modo de envío local

Los usuarios familiarizados con MaxCompute Spark a menudo usan este modo para realizar pruebas locales para verificar si la lógica del código es correcta. Este artículo se utiliza principalmente para verificar que el método JDBC que se ejecuta a través de Spark normalmente puede acceder a la fuente de datos de Hologres.

 

Código de muestra (PySpark):

chispa = SparkSession \ 
    .builder \ 
    .appName ("MC chispa") \ 
    .getOrCreate () 

jdbcDF = chispa.read.format ("jdbc"). \ 
    options ( 
    url = 'jdbc: postgresql: //hgpostcn-cn-xxx-cn-shanghai.hologres.aliyuncs.com: 80 / test_holo', 
    dbtable = 'prueba', 
    usuario = 'xxx', # egAccess_id 
    contraseña = ' xxx ', # egSecret_key 
    driver =' org.postgresql.Driver '). \ 
    load () 

jdbcDF.printSchema ()

Aquí usamos el método de conexión JDBC de Spark para conectarnos a Hologres a través del controlador postgresql, acceder a la tabla de prueba en la base de datos test_holo e imprimir la información del esquema de la tabla. Debido a que es una prueba local, elija usar la red pública para conectarse a Hologres, donde url es el nombre de dominio de acceso a la red pública de la instancia de hologres.

Utilice Spark-Submit para enviar el trabajo:


#Local Spark access Holo spark-submit --master local --driver-class-path /drivers/postgresql-42.2.16.jar --jars /path/postgresql-42.2.16.jar /path/read_holo.py

El controlador JDBC de Postgresql se puede descargar desde el sitio web oficial del controlador pg .

Verifique el registro de impresión de chispa después del envío:

image.png

La información del esquema de la tabla de prueba impresa es consistente con el esquema de la tabla de prueba creada en Holo, y el acceso es exitoso. Para otro procesamiento de datos en tablas de origen de datos JDBC, puede consultar la documentación de Apache Spark. Este artículo presenta principalmente cómo abrir el acceso y no se ampliará otra lógica de procesamiento.

Modo de envío de MaxCompute cluster (yarn-cluster)

Código de muestra (PySpark):

chispa = SparkSession \ 
    .builder \ 
    .appName ("MC chispa") \ 
    .getOrCreate () 

jdbcDF = chispa.read.format ("jdbc"). \ 
    options ( 
    url = 'jdbc: postgresql: //hgpostcn-cn-xxx-cn-shanghai-internal.hologres.aliyuncs.com: 80 / test_holo', 
    dbtable = 'test', 
    user = 'xxx', # egAccess_id 
    contraseña = 'xxx', # egSecret_key 
    driver = 'org.postgresql.Driver'). \ 
    load () 

jdbcDF.printSchema ()

Debido a que es un modo de envío de clúster, el código debe cargarse en la nube de MaxCompute para que se ejecute en el clúster. En el clúster, se accede a MaxCompute a través del nombre de dominio de red clásico de Hologres en el modo de intranet, y la dirección de la red pública no puede ser utilizado aquí.

 

Configure el cliente MaxCompute Spark (transformación personalizada para la adaptación de MaxCompute, introducción y descarga relacionadas, consulte la documentación del producto para obtener más detalles ) spark-defaults.conf, agregue el elemento de parámetro spark.hadoop.odps.cupid.trusted.services.access.list, agregue el clásico dirección de nombre de dominio de red de la instancia de hologres de destino a la que se debe acceder. El propósito de agregar esta configuración es habilitar la política de red correspondiente a la instancia de Hologres en el entorno sandbox de operación segura de MaxCompute; de ​​lo contrario, el clúster MaxCompute no puede acceder a servicios externos de forma predeterminada.

# Configuración de información de 
cuenta de Odps spark.hadoop.odps.project.name = your_maxc_project 
spark.hadoop.odps.access.id = xxx 
spark.hadoop.odps.access.key = xxx 
# endpoint 
spark.hadoop.odps.end.point = http : //service.cn.maxcompute.aliyun.com/api 
spark.hadoop.odps.runtime.end.point = http://service.cn.maxcompute.aliyun-inc.com/api 

#Acceso a la instancia de holo 
spark.hadoop .odps.cupid.trusted.services.access.list = hgprecn-cn-xxx-cn-shanghai-internal.hologres.aliyuncs.com:80

 

Utilice Spark-Submit para enviar el trabajo:


#Local Spark access Holo spark-submit --master yarn-cluster --driver-class-path /drivers/postgresql-42.2.16.jar --jars /path/postgresql-42.2.16.jar /path/read_holo.py

Después de enviarlo, verifique el registro de impresión de chispa. Cuando el trabajo se completa normalmente, imprimirá la dirección del enlace Vista de registro del trabajo y Vista de trabajo de Spark-UI, que los desarrolladores pueden usar para diagnosticar más el trabajo.

image.png

Verifique la información del trabajo de MaxCompute Logview y Spark-UI Job View para verificar que el trabajo se ejecute correctamente.

Verifique el registro en busca de errores y abra el enlace de vista de registro para verificar el estado de ejecución del trabajo.

image.png

Compruebe que el estado del trabajo sea Correcto y, al mismo tiempo, haga clic en el botón de salida StdOut del trabajador en master-0.

image.png

Aquí está el resultado de retorno de jdbcDF.printSchema () en el código de chispa, que es consistente con las expectativas, y la verificación está completa.

 

MaxCompute Spark también proporciona Spark web-ui para el diagnóstico del trabajo. Puede acceder a él abriendo la dirección del enlace de la vista del trabajo en el registro.

image.png

Haga clic en el botón de salida estándar del controlador para comprobar si la impresión de la aplicación cumple con las expectativas comerciales:

image.png

Modo de envío de DataWorks

Más usuarios utilizan DataWorks como el sistema de programación de trabajos de MaxCompute, y los usuarios de DataWorks también pueden enviar fácilmente trabajos de Spark a MaxCompute para darse cuenta de la lógica de acceder a Hologres.

El primer paso es iniciar sesión en la consola de Alibaba Cloud, ingresar al espacio de trabajo designado por Dataworks e ingresar al módulo de desarrollo de datos correspondiente al proyecto.

image.png

El segundo paso es crear / ajustar los procesos comerciales.

1. Cargue el archivo jar postgresql jdbc en el nodo MaxCompute en el proceso comercial para que el programa Spark pueda hacer referencia al controlador. Tenga en cuenta que aquí debe elegir utilizar el tipo de recurso de archivo (Archivo).

image.png

2. En el nodo de recursos, cargue el código Python. Este artículo envió el código pyspark para su prueba.

image.png

3. Seleccione el nodo de chispa odps en el lienzo del proceso empresarial y complete la información de los parámetros del trabajo de chispa.

  • Seleccione el nodo ODPS Spark compatible con el motor MaxCompute en el lienzo del proceso empresarial

image.png

  • Haga doble clic en el icono del nodo ODPS Spark en el lienzo, edite el nodo de la tarea y complete la información de la tarea.

Este artículo usa pyspark, por lo que el nodo elige el lenguaje Python y, al mismo tiempo, en la opción "seleccionar recurso principal de Python", selecciona el recurso del archivo Python que acaba de cargar.

En el elemento de configuración, agregue la lista blanca de red de la dirección de destino de hologres para esta tarea. La dirección aún usa el nombre de dominio de red clásico de la instancia de Hologres, como se muestra en la figura:

Elemento de configuración: spark.hadoop.odps.cupid.trusted.services.access.list

Valor del elemento de configuración: hgpostcn-cn-xxx-cn-shanghai-internal.hologres.aliyuncs.com:80

Al mismo tiempo, en la opción "Seleccionar recurso de archivo", seleccione el archivo jar del controlador de postgres que se cargó en el recurso en este momento.

image.png

Haga clic en Guardar y enviar.

4. Ejecute la tarea del nodo ODPS Spark en Dataworks para su verificación.

Haga clic en "Ejecutar nodo" y el registro del trabajo se imprimirá en la parte inferior de la página de Dataworks, que contiene la dirección del enlace Logview de la información de diagnóstico del trabajo MaxCompute.

image.png

Verifique el registro en busca de errores y abra el enlace de vista de registro para verificar el estado de ejecución del trabajo.

image.png

Compruebe que el estado del trabajo sea Correcto y, al mismo tiempo, haga clic en el botón de salida StdOut del trabajador en master-0.

image.png

Aquí está el resultado de retorno de jdbcDF.printSchema () en el código de chispa, que es consistente con las expectativas, y la verificación está completa.

Supongo que te gusta

Origin blog.csdn.net/weixin_43970890/article/details/115229661
Recomendado
Clasificación