Con el surgimiento de Lakehouse que combina almacenes de datos y lagos de datos, ha habido una tendencia entre los clientes de SAP que exploran la plataforma de análisis unificado o, por ejemplo, entornos unificados que abordan diferentes perspectivas de gestión de datos, ciclo de vida de datos y análisis, desarrollo y, finalmente, implementaciones de análisis basados en en diversas fuentes y formatos de datos. Desde la perspectiva de SAP, está claro que posicionaremos SAP Business Technology Platform para abordar la plataforma de análisis unificado proporcionando herramientas para integraciones, orquestación de datos, gestión de datos, desarrollo e implementaciones, generación de informes con
Hemos abordado esto en nuestro Taller de innovación BTP este verano con estrategia y ejecuciones para una historia de análisis de datos de extremo a extremo. Nuestra sesión se centra en escenarios de clientes en los que los datos externos se procesan en la plataforma Databricks Lakehouse y se replican en SAP HANA Cloud/Data Lake o SAP Data Warehouse Cloud utilizando Databricks Compute. Los mismos datos procesados también se pueden federar en SAP DWC utilizando un adaptador JDBC genérico. Luego podemos integrar los datos con las soluciones de SAP posicionando SAP Data Warehouse Cloud como plataforma de análisis unificado. Puede consultar el Diapositivas del día 2 y grabación de este blog donde Unnati Hasija y yo hemos impartido estas sesiones.
En esta serie de blogs, me gustaría abordar algunas de las capacidades clave de la plataforma Databricks delta lake y cómo procesamos los datos, digamos
En este blog, comenzaré con la federación de datos de Databricks SQL. Para los dos primeros puntos, todavía estoy trabajando en el contenido del video. Aquí se supone que los datos ya se procesaron desde Delta Lake y se almacenaron como tablas en Databricks SQL.
Puede obtener acceso a Databricks ya sea por
Una vez que inicie sesión en su cuenta, verá el entorno unificado para diferentes espacios de trabajo
Seleccionemos el espacio de trabajo «Ciencia e ingeniería de datos» y seleccionemos el cálculo que ha estado utilizando para la transformación de datos. Solo para tener en cuenta que cuando construimos canalizaciones de tablas de Delta Live, utiliza su propio cálculo para ejecutar canalizaciones. Discutiremos sobre eso en los blogs posteriores.
Seleccione el cómputo multipropósito para obtener información adicional. Si este es su primer inicio de sesión, entonces necesita crear una computación multipropósito para ejecutar sus scripts o canalizaciones.
Una vez que seleccione el cálculo, navegue hasta las «Opciones avanzadas» para obtener los detalles de la conexión JDBC
Encontrará la conexión JDBC necesaria en la columna URL de JDBC. Necesitamos modificarlo un poco antes de usarlo para la conectividad JDBC genérica con SAP Data Warehouse Cloud (SAP DWC). Además, nos conectaremos utilizando tokens de acceso personal y no credenciales de usuario.
Para generar el token de acceso personal, puede generar desde la configuración del usuario y guardar el token para su uso posterior.
Aquí está la URL final de JDBC que usaré en la conexión de SAP DWC.
jdbc:databricks://dbc-xxxxxxxxxxx.cloud.databricks.com:443/default;IgnoreTransactions=1;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/XXXXXXXXXXXXXXXXX268/XX-XX-56fird2a;AuthMech=3;UID=token;PWD=<Personal Access Token>
Aquí está la información adicional relacionada con la URL de JDBC
Proporcione la siguiente clase mientras se conecta desde SAP DWC.
com.databricks.client.jdbc.Driver
Ahora podemos navegar a Databricks SQL para ver si tenemos los esquemas y tablas necesarios para acceder. Puede ver los esquemas y también las tablas que creé bajo el esquema «dltcheck». En la demostración de la federación de SAP DWC, usaremos la tabla bucketraw1.
Para registrar el controlador JDBC en su máquina virtual o sistema local, descárguelo de Databricks sitio y use el último controlador 2.6.32
Para la instalación del agente DP en una máquina virtual o en un sistema local, puede consultar el estándar documento SAP o sigue esto Blog
Solo agregaré la información sobre las propiedades que deben ajustarse. De todos modos, creará un agente local desde DWC como se muestra a continuación y utilizará esta información para configurar el agente DP en su sistema VM/local.
Una vez configurado, navegue a la carpeta
Y navegue a la carpeta
Cambia el valor a delimident=MARCA INVERTIDA y guardarlo
Una vez hecho esto, reinicie el agente de aprovisionamiento de datos [DP Agent] y lo verá funcionando en SAP DWC(System-Configuration->Data Integration) . Habilite CamelJdbcAdapter.
Ahora deberíamos poder conectarnos a Databricks SQL desde DWC.
Inicie sesión en su URL de SAP DWC, navegue hasta el espacio para crear una nueva conexión para Databricks. Seleccione «Crear conexión» y elija JDBC genérico
Proporcione cualquier nombre comercial y los siguientes detalles
Clase : com.databricks.client.jdbc.Driver
URL de JDBC : jdbc:databricks://
Copie la URL de JDBC como tal desde las opciones avanzadas de Databricks Cluster y simplemente agregue el parámetro «IgnoreTransactions=1».
Luego agregue sus credenciales de cuenta de usuario de Databricks o credenciales de token con
Usuario y contraseña como las credenciales que usó para iniciar sesión en Databricks (su ID de correo electrónico y contraseña)
O
Usuario y contraseña como token y contraseña (nombre de usuario: token y contraseña: token real). Seleccione el agente de aprovisionamiento de datos que acaba de activar.
Una vez que guarde la conexión, puede «Validar la conexión» para asegurarse de que funciona.
Debería ver el mensaje de que la conexión es válida. Las tablas remotas están habilitadas.
Para asegurarnos de que tenemos acceso a los datos, usemos Data Builder para construir un modelo analítico que podría consumirse en SAP Analytics Cloud. Navegue a Data Builder y cree una nueva vista gráfica
Vaya a Orígenes->Conexiones->Databricks (su nombre comercial de conexión)->(su nombre de esquema de Databricks)->.
En mi caso, verá la lista de tablas en dltschema y estas son las mismas tablas que se mostraron en Databricks SQL
Seleccione los datos con los que desea construir el modelo analítico. En mi caso, es bucketraw1, agregó algunas columnas calculadas, agregó los datos necesarios y expuso las columnas relevantes como modelo analítico «Casos confirmados” . Y la vista previa de datos del modelo también muestra los registros correspondientes.
Ahora este modelo podría consumirse en SAP Analytics Cloud para informes.
Si no ve la conexión validada, entonces hay dos opciones para solucionar el problema. Podemos usar los archivos de registro genéricos del agente DP para identificar el problema o agregar los parámetros de registro en la URL de JDBC y recopilar esos errores específicos. Si tiene problemas de validación, agregue estos parámetros en la URL de jdbc.
Verifique esta URL ajustada con opciones de registro
jdbc:databricks://<youraccount>.cloud.databricks.com:443/default;LogLevel=5;LogPath=<foldername>;IgnoreTransactions=1;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/<SQLPath>;AuthMech=3;UID=token;PWD=<token>
Nivel de registro: 5, lo que significa habilitar el inicio de sesión en el nivel DEBUG, que registra información detallada que es útil para depurar el conector.
Logpath: estará disponible en la siguiente ruta /usr/sap/
Si ve algunos errores relacionados con entradas no coincidentes, ajuste las propiedades de camel jdbc como se menciona en las Instrucciones de instalación de DPAgent. Una vez que configuró «DELIMIDENTE» en «BACKTICK», el problema se resolvió.
2022-12-19 16:31:57,552 [ERROR] [f6053d30-7fcd-436f-bed8-bf4d1358847788523] DefaultErrorHandler | CamelLogger.log [] - Failed delivery for (MessageId: 2567788B8CF359D-0000000000000000 on ExchangeId: 2567788B8CF359D-0000000000000000). Exhausted after delivery attempt: 1 caught: java.sql.SQLException: [Databricks][DatabricksJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: org.apache.hive.service.cli.HiveSQLException: Error running query: org.apache.spark.sql.catalyst.parser.ParseException:
mismatched input '"FUNCTION_ALIAS_PREFIX_0"' expecting {<EOF>, ';'}(line 1, pos 33)
== SQL ==
SELECT SUM("confirmed_cases") AS "FUNCTION_ALIAS_PREFIX_0", SUM("deaths") AS "FUNCTION_ALIAS_PREFIX_1", "covidsummarygcs$VT"."county_name" FROM "default"."covidsummarygcs" "covidsummarygcs$VT" GROUP BY "covidsummarygcs$VT"."county_name"
Si ve la falla del enlace de comunicación, entonces el parámetro IgnoreTransactions no se ha establecido en su URL de JDBC.
Actualizaré los otros problemas que podría enfrentar y las resoluciones en este blog en las próximas semanas.
Hemos visto la forma en que los datos se pueden federar desde Databricks. Además, actualizaré los pasos sobre cómo realizar la carga masiva de datos de Databricks en SAP DWC o capturar cargas delta en los próximos blogs. Por favor, comparta sus comentarios. En caso de problemas de conexión, siéntase libre de comentar e intentaré ayudarlo.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073