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)