[ハイブ]ハイブパーティションテーブルをmysqlにエクスポートする(超簡単な操作)

これらのshoeスクリプトは、エクスポートをループで実行しますが、これは面倒で時間がかかります。

方法:ハイブクエリの結果をhdfsに保存してから、mysqlにエクスポートします

#先判断hdfs是否存在目标目录,不存在就创建
hadoop fs -test -e /tmp/$DB.db/$TABLE
   if [ $? -ne 0 ]; then
      echo "Directory not exists!"
      hadoop fs -mkdir -p $HDFSDIR
      echo "目标目录创建成功"
   else
      echo ""
   fi

#将hive查询结果导出到hdfs
hive -e "
  insert overwrite directory '$HDFSDIR' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select * from $DB.$TABLE"

#使用sqoop从hdfs导出到mysql
sqoop export \
  --connect jdbc:mysql://$IP:3306/$MYSQLDB \
  --username $USERNAME --password $PWD \
  --table $MYSQLTABLE \
  --export-dir $HDFSDIR \
  --update-key $FIELD \
  --update-mode allowinsert 

上記のスクリプトの変数には、独自の値が割り当てられています

$ DBハイブデータベース

$ TABLEハイブテーブル名

$ HDFSDIRハイブクエリ結果データが保存されるhdfsディレクトリ

$ IPmysqlサーバーIP

$ MYSQLDBmysqlデータベース

$ MYSQLTABLE mysql表

$ FIELDは、フィールドの更新と挿入のエクスポートに応じて、複数の用途、接続が存在する可能性があることを指定します

この方法は2つのステップで実行されます。最初のステップは、ニーズに応じてパーティションフィールドが必要かどうかに基づくことができ、クエリにパーティションフィールドを追加する必要があり、2番目のステップは完全または増分のニーズに基づいています。書き出す

おすすめ

転載: blog.csdn.net/qq_44065303/article/details/112917760