[Sqoop] Importar dados para a tabela de partição especificada do hive de formato orc

O seguinte artigo está importando a tabela mysql para a tabela de partição no formato de armazenamento hiveORC

Importar a tabela mysql para a tabela de partição no formato de armazenamento de arquivo TEXT do hive , clique aqui para pular

O Sqoop precisa contar com a lib do HCatalog, portanto, a variável de ambiente $ HCAT_HOME precisa ser configurada. Geralmente, o caminho relevante de hcatalog pode ser encontrado no diretório hive

  • Copie hive-hcatalog-core-1.2.2.jar de hive / lib para sqoop / lib
  • cp $ HIVE_HOME / lib / hive-shims * $ SQOOP_HOME / lib / 
  • Adicione no arquivo / etc / profile
export HCATALOG_HOME=${HIVE_HOME}/hcatalog

 Variáveis ​​que precisam ser atribuídas no script abaixo

$ {IP} O IP do servidor onde o mysql está localizado

$ {USERNAME} nome de usuário mysql

$ {PWD} senha do mysql

$ MYSQLTABLE mysql 表

O campo de hora na tabela $ {date_field}

$ {partition_name} o nome do campo de partição que precisa ser adicionado ao hive

valor de partição de seção $ {partition_value}

1. Sqoop cria e importa dados para a mesa Hive Orc

sqoop import \
--connect jdbc:mysql://$IP:3306/$MYSQLDB \
--username $USERNAME \
--password $PWD \
--table $MYSQLTABLE \
--driver com.mysql.jdbc.Driver \
--hcatalog-database intelligentCoal \
--create-hcatalog-table \
--hcatalog-table t_user_orc \
--where "date_format(${date_field},'%Y-%m-%d')='${partition_value}' and \$CONDITIONS" \
--hcatalog-partition-keys ${partition_name} \
--hcatalog-partition-values ${partition_value} \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1

 A opção where é adicionada ou não de acordo com as necessidades. O efeito de não adicionar where é o mesmo que --where "1 = 1 e \ $ CONDITIONS" \

2. O Sqoop importa dados para a mesa existente do hive orc

sqoop import \
--connect jdbc:mysql://$IP:3306/$MYSQLDB \
--username $USERNAME \
--password $PWD \
--table $MYSQLTABLE \
--driver com.mysql.jdbc.Driver \
--hcatalog-database intelligentCoal \
--hcatalog-table t_user_orc \
--where "date_format(${date_field},'%Y-%m-%d')='${partition_value}' and \$CONDITIONS" \
--hcatalog-partition-keys ${partition_name} \
--hcatalog-partition-values ${partition_value} \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1

Se você não especificar o tipo de campo, os dados varchar no MySQL também serão do tipo varchar quando extraídos para o hive, mas a operação do tipo varchar no hive causará vários problemas

  1. Extração incompleta de texto longo e texto contendo caracteres especiais

  2. O campo do tipo varchar da tabela orc da operação do Hive causa distorções

Solução: especifique o tipo de campo ao extrair dados (xxx é a coluna que você deseja alterar para o tipo String)

-map-column-hive xxx=String,xxxx=String

 -------------------------------------------------- -------------------------------------------------- ---------------

conectar Informações de conexão JDBC
nome de usuário Nome de usuário de autenticação JDBC
senha Senha de autenticação JDBC
tabela O nome da tabela de origem a ser importada
motorista Especifique o driver JDBC
create-hcatalog-table Especifique que a tabela precisa ser criada; se não for especificada, ela não será criada por padrão. Observe que se a tabela especificada já existir, um erro será relatado
hcatalog-table O nome da tabela de destino a ser exportada
hcatalog-storage-stanza Especifique o formato de armazenamento e o valor do parâmetro será unido ao comando de criação de tabela. Padrão: armazenado como rcfile
hcatalog-partition-keys Especifique o campo de partição, separe vários campos com vírgulas (versão aprimorada de hive-partition-key)
hcatalog-partition-values Especifique o valor da partição, separe vários valores de partição com vírgulas (aprimoramento do valor da partição da seção)

Acho que você gosta

Origin blog.csdn.net/qq_44065303/article/details/109379729
Recomendado
Clasificación