{"id":331,"date":"2019-03-19T10:39:35","date_gmt":"2019-03-19T09:39:35","guid":{"rendered":"http:\/\/justmakeit.es\/?p=331"},"modified":"2019-03-19T10:39:35","modified_gmt":"2019-03-19T09:39:35","slug":"creacion-tablas-hive-impala","status":"publish","type":"post","link":"http:\/\/justmakeit.es\/?p=331","title":{"rendered":"Creaci\u00f3n tablas HIVE\/Impala"},"content":{"rendered":"\n<p> Hoy me he encontrado un problema al intentar crear una query con la que poder crear una tabla particionada con una sentencia CREATE AS SELECT.<\/p>\n\n\n\n<p>Mi problema viene dado porque en el caso de Impala no permit\u00eda la ejecuci\u00f3n de la sentencia LATERAL VIEW que necesitaba para poder recuperar los datos tal y como los necesitaba y por la necesidad de crear la tabla con una partition din\u00e1mica.<br><\/p>\n\n\n\n<p>set hive.exec.dynamic.partition.mode=nonstrict;<br><\/p>\n\n\n\n<p>En la que la partici\u00f3n es la fecha (data_date string)<\/p>\n\n\n\n<p>CREATE TABLE IF NOT EXISTS db_name.table_name (rowid bigint, campo1 string, campo2 string, campo3 bigint, msg string) PARTITIONED BY (data_date string);<br><\/p>\n\n\n\n<p>Las dos primeras sentencias se ejecutan en Impala, y posteriormente se ejecuta la inserci\u00f3n de los datos a partir de una tabla origen desde HIVE.<br><\/p>\n\n\n\n<p>INSERT INTO db_name.table_name PARTITION (data_date=&#8217;${LOAD_DATE}&#8217;) SELECT rowid, campo1, campo2, campo3, salida.flag as msg from db_name.table_name_tmp LATERAL VIEW explode(array(error1,error2,error3,error4,error5)) salida as flag where salida.flag!=\u00bb;<br><\/p>\n\n\n\n<p>En esta sentencia hay que destacar algunos detalles interesantes:<\/p>\n\n\n\n<p>1. el alias salida sirve para identificar una \u00abtabla temporal\u00bb con la informaci\u00f3n recuperada por la sentencia LATERAL VIEW EXPLODE(ARRAY(xxx,xxx,&#8230;..).<\/p>\n\n\n\n<p>2. tras recuperar la info contenida en tabla_origen como error1, error2, etc, hacemos referencia a ella en el WHERE con salida.flag y recuperamos la info que no es vac\u00eda, aunque la condici\u00f3n podr\u00eda ser otra.<\/p>\n\n\n\n<p>3. en la sentencia del SELECT hacemos referencia a salida.flag as msg para hacer referencia al valor recuperado del LATERAL VIEW y guardarlo en la tabla destino en el campo msg que es el alias que le ponemos al hacer la SELECT.\u00a0 <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoy me he encontrado un problema al intentar crear una query con la que poder crear una tabla particionada con &hellip; <a href=\"http:\/\/justmakeit.es\/?p=331\" class=\"btn btn-readmore\">Read More <span class=\"screen-reader-text\"> \u00abCreaci\u00f3n tablas HIVE\/Impala\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-331","post","type-post","status-publish","format-standard","hentry","category-cosos"],"_links":{"self":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=331"}],"version-history":[{"count":2,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/331\/revisions"}],"predecessor-version":[{"id":333,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/331\/revisions\/333"}],"wp:attachment":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=331"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}