{"id":87609,"date":"2020-07-09T01:42:11","date_gmt":"2020-07-08T23:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum"},"modified":"2020-07-09T01:42:11","modified_gmt":"2020-07-08T23:42:11","slug":"kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","title":{"rendered":"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>H\u00e1 algum tempo, enfrentamos a quest\u00e3o de escolher uma ferramenta ETL para trabalhar com Big Data. A solu\u00e7\u00e3o anteriormente utilizada, Informatica BDM, n\u00e3o nos atendia devido a sua funcionalidade limitada. Seu uso se resumia a um framework para o lan\u00e7amento de comandos spark-submit. No mercado, havia poucas alternativas realmente capazes de lidar com o volume de dados com o qual lidamos diariamente. No final, escolhemos o Ab Initio. Durante as demonstra\u00e7\u00f5es piloto, o produto demonstrou uma velocidade de processamento de dados muito alta. H\u00e1 quase nenhuma informa\u00e7\u00e3o sobre o Ab Initio em portugu\u00eas, ent\u00e3o decidimos compartilhar nossa experi\u00eancia no Habr.<\/p>\n<p>O Ab Initio possui v\u00e1rias transforma\u00e7\u00f5es cl\u00e1ssicas e incomuns, cujo c\u00f3digo pode ser expandido usando a pr\u00f3pria linguagem PDL. Para pequenas empresas, tal ferramenta poderosa pode ser um exagero, e a maioria de suas funcionalidades pode se mostrar cara e desnecess\u00e1ria. Mas se suas opera\u00e7\u00f5es se aproximam das do Sberbank, o Ab Initio pode ser interessante para voc\u00ea. <\/p>\n<p>Ele ajuda as empresas a acumular conhecimento globalmente e desenvolver um ecossistema, enquanto permite que os desenvolvedores aprimorem suas habilidades em ETL, aprofundem seus conhecimentos em shell, oferece a oportunidade de aprender a linguagem PDL, fornece uma vis\u00e3o visual dos processos de carga e simplifica o desenvolvimento gra\u00e7as \u00e0 abund\u00e2ncia de componentes funcionais.<\/p>\n<p>Neste post, falarei sobre as capacidades do Ab Initio e apresentarei caracter\u00edsticas comparativas de seu desempenho com Hive e GreenPlum.<\/p>\n<ul>\n<li>Descri\u00e7\u00e3o do framework MDW e do trabalho de sua configura\u00e7\u00e3o para o GreenPlum<\/li>\n<li>Caracter\u00edsticas comparativas de desempenho do Ab Initio em rela\u00e7\u00e3o ao Hive e GreenPlum<\/li>\n<li>Funcionamento do Ab Initio com GreenPlum em modo Near Real Time<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA funcionalidade deste produto \u00e9 muito ampla e requer um bom tempo para ser estudada. No entanto, com as habilidades adequadas e configura\u00e7\u00f5es corretas de desempenho, os resultados do processamento de dados s\u00e3o bastante impressionantes. O uso do Ab Initio pode proporcionar ao desenvolvedor uma experi\u00eancia interessante. \u00c9 uma nova perspectiva sobre desenvolvimento ETL, um h\u00edbrido entre um ambiente visual e o desenvolvimento de cargas em uma linguagem semelhante a scripts.<\/p>\n<p>Os neg\u00f3cios est\u00e3o desenvolvendo seus ecossistemas e esta ferramenta se mostra mais relevante do que nunca. Com o Ab Initio, \u00e9 poss\u00edvel acumular conhecimento sobre o neg\u00f3cio atual e utilizar essas informa\u00e7\u00f5es para ampliar neg\u00f3cios existentes e abrir novos. Alternativas ao Ab Initio incluem as plataformas de desenvolvimento visual Informatica BDM e, em ambientes n\u00e3o visuais, o Apache Spark.<\/p>\n<h3>Descri\u00e7\u00e3o do Ab Initio<\/h3>\n<p>\nO Ab Initio, assim como outras ferramentas ETL, consiste em um conjunto de produtos.<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/c467fe1e8455805075856967b577f8b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO Ab Initio GDE (Graphical Development Environment) \u00e9 um ambiente para desenvolvedores onde eles configuram transforma\u00e7\u00f5es de dados e conectam essas transforma\u00e7\u00f5es em fluxos de dados representados por setas. Esse conjunto de transforma\u00e7\u00f5es \u00e9 chamado de gr\u00e1fico:<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/7b0c19a82ae8b461a9bd85117555e106.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs conex\u00f5es de entrada e sa\u00edda dos componentes funcionais s\u00e3o chamadas de portas e cont\u00eam campos calculados dentro das transforma\u00e7\u00f5es. V\u00e1rios gr\u00e1ficos, conectados por fluxos de setas na ordem em que s\u00e3o executados, s\u00e3o chamados de plano.<\/p>\n<p>Existem v\u00e1rias centenas de componentes funcionais, o que \u00e9 bastante. Muitos deles s\u00e3o altamente especializados. As capacidades das transforma\u00e7\u00f5es cl\u00e1ssicas no Ab Initio s\u00e3o mais amplas do que nas outras ferramentas ETL. Por exemplo, o Join possui v\u00e1rias sa\u00eddas. Al\u00e9m do resultado da jun\u00e7\u00e3o dos conjuntos de dados, \u00e9 poss\u00edvel obter registros dos conjuntos de dados de entrada, cujas chaves n\u00e3o conseguiram se conectar. Tamb\u00e9m \u00e9 poss\u00edvel obter rejei\u00e7\u00f5es, erros e um log do trabalho da transforma\u00e7\u00e3o, que pode ser lido neste mesmo gr\u00e1fico como um arquivo de texto e processado por outras transforma\u00e7\u00f5es:<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/c7d70879daad364a3d4aa41a0a1b738d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOu, por exemplo, \u00e9 poss\u00edvel materializar o receptor de dados na forma de uma tabela e ler dados dela neste mesmo gr\u00e1fico.<\/p>\n<p>Existem transforma\u00e7\u00f5es originais. Por exemplo, a transforma\u00e7\u00e3o Scan possui funcionalidades como nas fun\u00e7\u00f5es anal\u00edticas. H\u00e1 transforma\u00e7\u00f5es com nomes descritivos: Create Data, Read Excel, Normalize, Sort within Groups, Run Program, Run SQL, Join with DB, entre outras. Os gr\u00e1ficos podem utilizar par\u00e2metros de tempo de execu\u00e7\u00e3o, incluindo a possibilidade de passar par\u00e2metros do sistema operacional ou para o sistema operacional. Arquivos com um conjunto de par\u00e2metros prontos para passar para o gr\u00e1fico s\u00e3o chamados de conjuntos de par\u00e2metros (psets).<\/p>\n<p>Como esperado, o Ab Initio GDE possui seu reposit\u00f3rio, chamado EME (Enterprise Meta Environment). Os desenvolvedores t\u00eam a capacidade de trabalhar com vers\u00f5es locais do c\u00f3digo e realizar check-in de seus desenvolvimentos no reposit\u00f3rio central.<\/p>\n<p>\u00c9 poss\u00edvel, durante ou ap\u00f3s a execu\u00e7\u00e3o do gr\u00e1fico, clicar em qualquer transforma\u00e7\u00e3o de fluxo e visualizar os dados que passaram entre essas transforma\u00e7\u00f5es:<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/a674507b2cd25b980cb862bda2e10cbe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTamb\u00e9m \u00e9 poss\u00edvel clicar em qualquer fluxo e verificar os detalhes de rastreamento - em quantos paralelos a transforma\u00e7\u00e3o funcionou, quantas linhas e bytes foram carregados em cada um dos paralelos:<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/6188d17bebe756ee59e6956f9a40ec43.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9 poss\u00edvel dividir a execu\u00e7\u00e3o do gr\u00e1fico em fases e marcar quais transforma\u00e7\u00f5es precisam ser executadas primeiro (na fase zero), as seguintes na primeira fase, as seguintes na segunda fase, e assim por diante.<\/p>\n<p>Para cada transforma\u00e7\u00e3o, \u00e9 poss\u00edvel escolher um layout (onde ser\u00e1 executada): sem paralelos ou em fluxos paralelos, cujo n\u00famero pode ser definido. Os arquivos tempor\u00e1rios que o Ab Initio cria ao trabalhar com as transforma\u00e7\u00f5es podem ser armazenados tanto no sistema de arquivos <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/dts-los-angeles\/\"   title=\"servidor\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3635\">servidor<\/a>, quanto no HDFS.<\/p>\n<p>Em cada transforma\u00e7\u00e3o, com base em um modelo padr\u00e3o, \u00e9 poss\u00edvel criar seu pr\u00f3prio script na linguagem PDL, que \u00e9 um pouco semelhante ao shell. <\/p>\n<p>Com a linguagem PDL, voc\u00ea pode expandir a funcionalidade das transforma\u00e7\u00f5es e, em particular, pode gerar dinamicamente (durante a execu\u00e7\u00e3o) fragmentos arbitr\u00e1rios de c\u00f3digo dependendo dos par\u00e2metros de execu\u00e7\u00e3o.<\/p>\n<p>Al\u00e9m disso, o Ab Initio tem uma boa integra\u00e7\u00e3o com o SO atrav\u00e9s do shell. Especificamente, o Sberbank usa o linux ksh. \u00c9 poss\u00edvel trocar vari\u00e1veis com o shell e us\u00e1-las como par\u00e2metros dos gr\u00e1ficos. \u00c9 poss\u00edvel chamar a execu\u00e7\u00e3o dos gr\u00e1ficos Ab Initio a partir do shell e administrar o Ab Initio.<\/p>\n<p>Al\u00e9m do Ab Initio GDE, o fornecedor oferece muitos outros produtos. Existe seu pr\u00f3prio Co&gt;Operation System, que se prop\u00f5e a ser um sistema operacional. Existe o Control&gt;Center, onde \u00e9 poss\u00edvel agendar e monitorar os fluxos de carga. Existem produtos para realizar desenvolvimento em um n\u00edvel mais primitivo do que o que o Ab Initio GDE permite.<\/p>\n<h3>Descri\u00e7\u00e3o do framework MDW e do trabalho de sua configura\u00e7\u00e3o para o GreenPlum<\/h3>\n<p>\nJunto com seus produtos, o fornecedor entrega o produto MDW (Metadata Driven Warehouse), que \u00e9 um configurador de gr\u00e1ficos, destinado a ajudar nas tarefas t\u00edpicas de preenchimento de armaz\u00e9ns de dados ou data vaults.<\/p>\n<p>Ele cont\u00e9m parseadores de metadados personalizados (espec\u00edficos do projeto) e geradores de c\u00f3digo prontos para uso.<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/0842ecb9550f369875103ccb23cdf121.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNa entrada, o MDW recebe um modelo de dados, um arquivo de configura\u00e7\u00e3o para o ajuste da conex\u00e3o com o banco de dados (Oracle, Teradata ou Hive) e algumas outras configura\u00e7\u00f5es. A parte espec\u00edfica do projeto, por exemplo, implanta o modelo no banco de dados. A parte padr\u00e3o do produto gera grafos e arquivos de configura\u00e7\u00e3o para eles com o carregamento de dados nas tabelas do modelo. Nesse processo, s\u00e3o criados grafos (e psets) para v\u00e1rios modos de trabalho inicial e incremental na atualiza\u00e7\u00e3o de entidades.<\/p>\n<p>Nos casos do Hive e RDBMS, s\u00e3o gerados grafos distintos para a atualiza\u00e7\u00e3o inicial e incremental dos dados.<\/p>\n<p>No caso do Hive, os dados recebidos do delta s\u00e3o unidos por meio do Ab Initio Join com os dados que estavam na tabela antes da atualiza\u00e7\u00e3o. Os carregadores de dados no MDW (tanto no Hive quanto no RDBMS) n\u00e3o apenas inserem novos dados do delta, mas tamb\u00e9m fecham os per\u00edodos de validade dos dados cujas chaves prim\u00e1rias receberam o delta. Al\u00e9m disso, \u00e9 necess\u00e1rio reescrever a parte inalterada dos dados. Contudo, isso \u00e9 necess\u00e1rio, pois o Hive n\u00e3o possui opera\u00e7\u00f5es de delete ou update.<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/36b6dd7c4d45727ad7d7aa1183fdd5fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo caso do RDBMS, os grafos para atualiza\u00e7\u00e3o incremental dos dados s\u00e3o mais otimizados, uma vez que o RDBMS possui reais capacidades de atualiza\u00e7\u00e3o.<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b62ac222bed575a60b632b13e012f603.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO delta recebido \u00e9 carregado em uma tabela intermedi\u00e1ria no banco de dados. Ap\u00f3s isso, ocorre a jun\u00e7\u00e3o do delta com os dados que estavam na tabela antes da atualiza\u00e7\u00e3o. Isso \u00e9 feito por meio de SQL usando uma consulta SQL gerada. Em seguida, com comandos SQL de delete+insert, novos dados do delta s\u00e3o inseridos na tabela alvo e os per\u00edodos de validade dos dados, cujas chaves prim\u00e1rias receberam o delta, s\u00e3o fechados. <br \/>\nN\u00e3o h\u00e1 necessidade de reescrever os dados inalterados.<\/p>\n<p>Assim, chegamos \u00e0 conclus\u00e3o de que, no caso do Hive, o MDW deve optar por reescrever toda a tabela, pois o Hive n\u00e3o tem a fun\u00e7\u00e3o de atualiza\u00e7\u00e3o. E nada melhor que uma reescrita completa dos dados ao realizar uma atualiza\u00e7\u00e3o. No caso do RDBMS, ao contr\u00e1rio, os criadores do produto acharam necess\u00e1rio confiar \u00e0 utiliza\u00e7\u00e3o do SQL a jun\u00e7\u00e3o e atualiza\u00e7\u00e3o das tabelas.<\/p>\n<p>Para o projeto no Sberbank, criamos uma nova implementa\u00e7\u00e3o reutiliz\u00e1vel do carregador de banco de dados para GreenPlum. Isso foi feito com base na vers\u00e3o que o MDW gera para Teradata. Foi a Teradata, e n\u00e3o a Oracle, que se mostrou mais adequada, pois tamb\u00e9m \u00e9 um sistema MPP. As formas de opera\u00e7\u00e3o, assim como a sintaxe da Teradata e do GreenPlum, acabaram sendo semelhantes.<\/p>\n<p>Exemplos de diferen\u00e7as cr\u00edticas para o MDW entre diferentes RDBMS s\u00e3o os seguintes. No GreenPlum, ao contr\u00e1rio da Teradata, ao criar tabelas \u00e9 necess\u00e1rio escrever a cl\u00e1usula<\/p>\n<pre><code class=\"sql\">distributed by<\/code><\/pre>\n<p>\nNa Teradata escreve-se<\/p>\n<pre><code class=\"sql\">delete &lt;table&gt; all<\/code><\/pre>\n<p>\n, enquanto no GreenPlum escreve-se<\/p>\n<pre><code class=\"sql\">deletar de &lt;table&gt;<\/code><\/pre>\n<p>\nNa Oracle, para otimiza\u00e7\u00e3o, escreve-se<\/p>\n<pre><code class=\"sql\">delete from t where rowid in ()<\/code><\/pre>\n<p>\n, enquanto na Teradata e no GreenPlum escreve-se<\/p>\n<pre><code class=\"sql\">delete from t where exists (select * from delta where delta.pk=t.pk)<\/code><\/pre>\n<p>\nVale ressaltar que, para o funcionamento do Ab Initio com o GreenPlum, foi necess\u00e1rio instalar o cliente GreenPlum em todos os n\u00f3s do cluster Ab Initio. Isso se deve ao fato de que nos conectamos ao GreenPlum simultaneamente de todos os n\u00f3s do nosso cluster. E, para que a leitura do GreenPlum fosse paralela e cada fluxo paralelo do Ab Initio lesse sua parte dos dados do GreenPlum, foi necess\u00e1rio colocar na se\u00e7\u00e3o \"where\" das consultas SQL uma constru\u00e7\u00e3o compreens\u00edvel ao Ab Initio<\/p>\n<pre><code class=\"sql\">where ABLOCAL()<\/code><\/pre>\n<p>\ne definir o valor dessa constru\u00e7\u00e3o, especificando para a transforma\u00e7\u00e3o que l\u00ea do banco de dados o par\u00e2metro<\/p>\n<pre><code class=\"sql\">ablocal_expr=\u00abstring_concat(&quot;mod(t.&quot;, string_filter_out(&quot;{$TABLE_KEY}&quot;,&quot;{}&quot;), &quot;,&quot;, (decimal(3))(number_of_partitions()),&quot;)=&quot;, (decimal(3))(this_partition()))\u00bb<\/code><\/pre>\n<p>\n, que \u00e9 compilada em algo como<\/p>\n<pre><code class=\"sql\">mod(sk,10)=3<\/code><\/pre>\n<p>\n, ou seja, \u00e9 preciso sugerir ao GreenPlum um filtro expl\u00edcito para cada parti\u00e7\u00e3o. Para outros bancos de dados (Teradata, Oracle), o Ab Initio pode realizar essa paraleliza\u00e7\u00e3o automaticamente.<\/p>\n<h3>Caracter\u00edsticas comparativas de desempenho do Ab Initio em rela\u00e7\u00e3o ao Hive e GreenPlum<\/h3>\n<p>\nNo Sberbank, foi realizado um experimento comparando o desempenho dos gr\u00e1ficos gerados pelo MDW em rela\u00e7\u00e3o ao Hive e ao GreenPlum. No \u00e2mbito do experimento, no caso do Hive havia 5 n\u00f3s no mesmo cluster que o Ab Initio, enquanto no caso do GreenPlum havia 4 n\u00f3s em um cluster separado. Ou seja, o Hive teve certa vantagem sobre o GreenPlum \"em termos de hardware\".<\/p>\n<p>Foram consideradas duas pares de gr\u00e1ficos realizando a mesma tarefa de atualiza\u00e7\u00e3o de dados no Hive e no GreenPlum. A execu\u00e7\u00e3o dos gr\u00e1ficos foi feita com os gerados pelo configurador MDW:<\/p>\n<ul>\n<li>carregamento inicial + carregamento incremental de dados aleat\u00f3rios na tabela Hive<\/li>\n<li>carregamento inicial + carregamento incremental de dados aleat\u00f3rios na mesma tabela do GreenPlum<\/li>\n<\/ul>\n<p>\nEm ambos os casos (Hive e GreenPlum), foram realizados carregamentos em 10 fluxos paralelos no mesmo cluster Ab Initio. Os dados intermedi\u00e1rios para os c\u00e1lculos do Ab Initio foram armazenados no HDFS (nos termos do Ab Initio, foi utilizado MFS layout usando HDFS). Uma linha de dados gerados aleatoriamente ocupou 200 bytes em ambos os casos.<\/p>\n<p>O resultado foi o seguinte:<\/p>\n<p><b>Hive:<\/b><\/p>\n<p><b>Carga inicial no Hive<\/b><\/p>\n<p>Linhas inseridas<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Dura\u00e7\u00e3o da carga inicial<br \/>\nem segundos<br \/>\n41<br \/>\n203<br \/>\n1 601<\/p>\n<p><b>Carga incremental no Hive<\/b><\/p>\n<p>N\u00famero de linhas na<br \/>\ntabela alvo no in\u00edcio do experimento<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>N\u00famero de linhas de delta aplicadas \u00e0<br \/>\ntabela alvo durante o experimento<br \/>\n6 000 000<br \/>\n6 000 000<br \/>\n6 000 000<\/p>\n<p>Dura\u00e7\u00e3o da carga incremental<br \/>\nem segundos<br \/>\n88<br \/>\n299<br \/>\n<b>2 541<\/b><\/p>\n<p>\n<b>GreenPlum:<\/b><\/p>\n<p><b>Carga inicial no GreenPlum<\/b><\/p>\n<p>Linhas inseridas<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>Dura\u00e7\u00e3o da carga inicial<br \/>\nem segundos<br \/>\n72<br \/>\n360<br \/>\n3 631<\/p>\n<p><b>Carga incremental no GreenPlum<\/b><\/p>\n<p>N\u00famero de linhas na<br \/>\ntabela alvo no in\u00edcio do experimento<br \/>\n6 000 000<br \/>\n60 000 000<br \/>\n600 000 000<\/p>\n<p>N\u00famero de linhas de delta aplicadas \u00e0<br \/>\ntabela alvo durante o experimento<br \/>\n6 000 000<br \/>\n6 000 000<br \/>\n6 000 000<\/p>\n<p>Dura\u00e7\u00e3o da carga incremental<br \/>\nem segundos<br \/>\n159<br \/>\n199<br \/>\n<b>321<\/b><\/p>\n<p>\nObservamos que a velocidade da carga inicial, tanto no Hive quanto no GreenPlum, depende linearmente do volume de dados e, devido ao melhor hardware, \u00e9 um pouco mais r\u00e1pida para o Hive do que para o GreenPlum.<\/p>\n<p>A carga incremental no Hive tamb\u00e9m depende linearmente do volume de dados anteriormente carregados na tabela alvo e ocorre de forma bastante lenta com o aumento do volume. Isso se deve \u00e0 necessidade de reescrever completamente a tabela alvo. Isso significa que a aplica\u00e7\u00e3o de pequenas altera\u00e7\u00f5es em enormes tabelas n\u00e3o \u00e9 uma boa op\u00e7\u00e3o de uso para o Hive.<\/p>\n<p>Por outro lado, a carga incremental no GreenPlum depende pouco do volume de dados anteriormente carregados na tabela alvo e ocorre de forma bastante r\u00e1pida. Isso se deve \u00e0s SQL Joins e \u00e0 arquitetura do GreenPlum, que permite a opera\u00e7\u00e3o de delete.<\/p>\n<p>Assim, o GreenPlum injeta o delta usando delete+insert, enquanto no Hive n\u00e3o h\u00e1 opera\u00e7\u00f5es de delete ou update, portanto, todo o conjunto de dados teve que ser reescrito completamente durante a atualiza\u00e7\u00e3o incremental. A compara\u00e7\u00e3o das c\u00e9lulas em negrito \u00e9 bastante indicativa, pois corresponde \u00e0 op\u00e7\u00e3o mais comum de utiliza\u00e7\u00e3o de carregamentos intensivos em recursos. Vemos que o GreenPlum venceu o Hive neste teste por 8 vezes.<\/p>\n<h3>Funcionamento do Ab Initio com GreenPlum em modo Near Real Time<\/h3>\n<p>\nNeste experimento, vamos verificar a capacidade do Ab Initio de atualizar a tabela GreenPlum com por\u00e7\u00f5es de dados geradas aleatoriamente em um modo pr\u00f3ximo ao tempo real. Vamos considerar a tabela GreenPlum dev42_1_db_usl.TESTING_SUBJ_org_finval, com a qual iremos trabalhar.<\/p>\n<p>Vamos usar tr\u00eas gr\u00e1ficos do Ab Initio para trabalhar com ela:<\/p>\n<p>1) Gr\u00e1fico Create_test_data.mp \u2013 cria arquivos de dados no HDFS com 6.000.000 linhas em 10 fluxos paralelos. Os dados s\u00e3o aleat\u00f3rios e sua estrutura \u00e9 organizada para inser\u00e7\u00e3o em nossa tabela.<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/8cac605c1c5931313bd016a48fb6384e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b86988bf1722329bde60013ba025d600.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n2) Gr\u00e1fico mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset \u2013 gr\u00e1fico MDW gerado para a inser\u00e7\u00e3o inicial de dados em nossa tabela em 10 fluxos paralelos (dados de teste gerados pelo gr\u00e1fico (1)).<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/b4228a13c088c6b96abba35e9e58fe8e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n3) Gr\u00e1fico mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset \u2013 gr\u00e1fico MDW gerado para a atualiza\u00e7\u00e3o incremental de nossa tabela em 10 fluxos paralelos utilizando um lote de dados rec\u00e9m-chegados (deltas), gerados pelo gr\u00e1fico (1).<\/p>\n<p><img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/714a901616cf84e5a1fd7a764373e30f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExecutaremos o seguinte cen\u00e1rio em modo NRT:<\/p>\n<ul>\n<li>gerar 6.000.000 linhas de teste.<\/li>\n<li>realizar a carga inicial, inserindo 6.000.000 linhas de teste em uma tabela vazia.<\/li>\n<li>repetir 5 vezes a carga incremental.\n<ul>\n<li>gerar 6.000.000 linhas de teste.<\/li>\n<li>realizar a inser\u00e7\u00e3o incremental de 6.000.000 linhas de teste na tabela (nesse caso, os dados antigos recebem um timestamp de expira\u00e7\u00e3o valid_to_ts e dados mais novos s\u00e3o inseridos com a mesma chave prim\u00e1ria).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nEsse cen\u00e1rio emula o funcionamento real de um sistema de neg\u00f3cios \u2013 uma quantidade significativa de novos dados aparece em tempo real e \u00e9 imediatamente incorporada ao GreenPlum.<\/p>\n<p>Agora vamos verificar o log de execu\u00e7\u00e3o do cen\u00e1rio:<\/p>\n<p><i>Iniciar Create_test_data.input.pset em 2020-06-04 11:49:11<br \/>\nFinalizar Create_test_data.input.pset em 2020-06-04 11:49:37<br \/>\nIniciar mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:49:37<br \/>\nFinalizar mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:50:42<br \/>\nIniciar Create_test_data.input.pset em 2020-06-04 11:50:42<br \/>\nFinalizar Create_test_data.input.pset em 2020-06-04 11:51:06<br \/>\nIniciar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:51:06<br \/>\nFinalizar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:53:41<br \/>\nIniciar Create_test_data.input.pset em 2020-06-04 11:53:41<br \/>\nFinalizar Create_test_data.input.pset em 2020-06-04 11:54:04<br \/>\nIniciar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:54:04<br \/>\nFinalizar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:56:51<br \/>\nIniciar Create_test_data.input.pset em 2020-06-04 11:56:51<br \/>\nFinalizar Create_test_data.input.pset em 2020-06-04 11:57:14<br \/>\nIniciar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:57:14<br \/>\nFinalizar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 11:59:55<br \/>\nIniciar Create_test_data.input.pset em 2020-06-04 11:59:55<br \/>\nFinalizar Create_test_data.input.pset em 2020-06-04 12:00:23<br \/>\nIniciar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 12:00:23<br \/>\nFinalizar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 12:03:23<br \/>\nIniciar Create_test_data.input.pset em 2020-06-04 12:03:23<br \/>\nFinalizar Create_test_data.input.pset em 2020-06-04 12:03:49<br \/>\nIniciar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 12:03:49<br \/>\nFinalizar mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset em 2020-06-04 12:06:46<\/i><\/p>\n<p>A imagem \u00e9 a seguinte:<\/p>\n<p>Gr\u00e1fico<br \/>\nHora de in\u00edcio<br \/>\nHora de t\u00e9rmino<br \/>\nDura\u00e7\u00e3o<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:49:11<br \/>\n04.06.2020 11:49:37<br \/>\n00:00:26<\/p>\n<p>mdw_load.day_one.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:49:37<br \/>\n04.06.2020 11:50:42<br \/>\n00:01:05<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:50:42<br \/>\n04.06.2020 11:51:06<br \/>\n00:00:24<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:51:06<br \/>\n04.06.2020 11:53:41<br \/>\n00:02:35<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:53:41<br \/>\n04.06.2020 11:54:04<br \/>\n00:00:23<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:54:04<br \/>\n04.06.2020 11:56:51<br \/>\n00:02:47<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:56:51<br \/>\n04.06.2020 11:57:14<br \/>\n00:00:23<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 11:57:14<br \/>\n04.06.2020 11:59:55<br \/>\n00:02:41<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 11:59:55<br \/>\n04.06.2020 12:00:23<br \/>\n00:00:28<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 12:00:23<br \/>\n04.06.2020 12:03:23<br \/>\n00:03:00<\/p>\n<p>Create_test_data.input.pset<br \/>\n04.06.2020 12:03:23<br \/>\n04.06.2020 12:03:49<br \/>\n00:00:26<\/p>\n<p>mdw_load.regular.current.<br \/>\ndev42_1_db_usl_testing_subj_org_finval.pset<br \/>\n04.06.2020 12:03:49<br \/>\n04.06.2020 12:06:46<br \/>\n00:02:57<\/p>\n<p>\nObservamos que 6.000.000 linhas de incremento s\u00e3o processadas em 3 minutos, o que \u00e9 bastante r\u00e1pido.<br \/>\nOs dados na tabela de destino foram distribu\u00eddos da seguinte forma:<\/p>\n<pre><code class=\"sql\">select valid_from_ts, valid_to_ts, count(1), min(sk), max(sk) from dev42_1_db_usl.TESTING_SUBJ_org_finval group by valid_from_ts, valid_to_ts order by 1,2;<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Quando voc\u00ea tem escalas da Sber. Uso do Ab Initio com Hive e GreenPlum\" src=\"\/wp-content\/uploads\/2020\/07\/baefcfd8142f4ad6275333e3dcfccf94.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u00c9 poss\u00edvel ver a correspond\u00eancia dos dados inseridos nos momentos de in\u00edcio dos gr\u00e1ficos.<br \/>\nSignifica que podemos iniciar no Ab Initio a carga incremental de dados no GreenPlum com uma frequ\u00eancia muito alta e observar uma alta velocidade de inser\u00e7\u00e3o desses dados no GreenPlum. Claro, n\u00e3o ser\u00e1 poss\u00edvel iniciar a cada segundo, pois o Ab Initio, como qualquer ferramenta ETL, requer tempo de \"aquecimento\" ao ser iniciado.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>\nAtualmente, o Ab Initio \u00e9 utilizado no Sberbank para construir uma Camada Sem\u00e2ntica \u00danica de Dados (ECA). Este projeto implica a constru\u00e7\u00e3o de uma vers\u00e3o \u00fanica do estado de v\u00e1rias entidades de neg\u00f3cios banc\u00e1rios. A informa\u00e7\u00e3o vem de v\u00e1rias fontes, cujas r\u00e9plicas s\u00e3o preparadas no Hadoop. De acordo com as necessidades do neg\u00f3cio, um modelo de dados \u00e9 preparado e as transforma\u00e7\u00f5es de dados s\u00e3o descritas. O Ab Initio carrega informa\u00e7\u00f5es na ECA e os dados carregados n\u00e3o apenas s\u00e3o de interesse para o neg\u00f3cio em si, mas tamb\u00e9m servem de fonte para a constru\u00e7\u00e3o de vitrines de dados. O funcionalidade do produto permite usar diferentes sistemas como receptores (Hive, Greenplum, Teradata, Oracle), o que possibilita preparar os dados para o neg\u00f3cio em v\u00e1rios formatos necess\u00e1rios sem grandes esfor\u00e7os.<\/p>\n<p>As capacidades do Ab Initio s\u00e3o amplas; por exemplo, a estrutura MDW proporciona a possibilidade de construir a historicidade t\u00e9cnica e de neg\u00f3cios dos dados \"pronta para uso\". Para os desenvolvedores, o Ab Initio possibilita \"n\u00e3o inventar a roda\", mas sim utilizar uma infinidade de componentes funcionais dispon\u00edveis, que s\u00e3o essencialmente bibliotecas necess\u00e1rias para trabalhar com dados.<\/p>\n<blockquote><p>Autor \u2014 especialista da comunidade profissional Sberbank SberProfi DWH\/BigData. A comunidade profissional SberProfi DWH\/BigData \u00e9 respons\u00e1vel pelo desenvolvimento de compet\u00eancias em \u00e1reas como ecossistema Hadoop, Teradata, Oracle DB, GreenPlum, al\u00e9m de ferramentas BI como Qlik, SAP BO, Tableau e outras.<\/p><\/blockquote>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/509936\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0415\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u043b\u043e\u0441\u044c \u043a \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0443 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 spark-submit. \u041d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0438\u043c\u0435\u043b\u043e\u0441\u044c \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0435\u043c \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87610,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87609","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0441\u0431\u0435\u0440\u043e\u0432\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Ab Initio \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Hive \u0438 GreenPlum | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-08T23:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T23:42:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Quando voc\u00ea tem os tamanhos do Sber. Uso do Ab Initio ao trabalhar com Hive e GreenPlum | ProHoster","description":"Algum tempo atr\u00e1s, enfrentamos a quest\u00e3o de escolher uma ferramenta ETL para trabalhar com Big Data. A solu\u00e7\u00e3o anteriormente utilizada, Informatica BDM, n\u00e3o nos atendia devido \u00e0 sua funcionalidade limitada.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0441\u0431\u0435\u0440\u043e\u0432\u0441\u043a\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Ab Initio \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Hive \u0438 GreenPlum | ProHoster","og:description":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u0441\u0442\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b\u0431\u043e\u0440\u0430 ETL-\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 BigData. \u0420\u0430\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Informatica BDM \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u043e \u043d\u0430\u0441 \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kogda-u-vas-sberovskie-masshtaby-ispolzovanie-ab-initio-pri-rabote-s-hive-i-greenplum","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-08T23:42:11+00:00","article:modified_time":"2020-07-08T23:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87609","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:47:29","updated":"2026-02-22 15:29:30","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=87609"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87609\/revisions"}],"predecessor-version":[{"id":162163,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/87609\/revisions\/162163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/87610"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=87609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=87609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=87609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}