簡體   English   中英

從 Hive 到 Hive 的 Sqoop 導入

[英]Sqoop Import from Hive to Hive

我們可以使用Sqoop將表從 Hive DataSource 導入到 Hive DataSource

查詢如 -

sqoop import --connect jdbc:hive2://localhost:10000/default --driver org.apache.hive.jdbc.HiveDriver --username root --password root --table student1 -m 1 --target-dir hdfs://localhost:9000/user/dummy/hive2result

現在它拋出以下異常

15/07/19 19:50:18 ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Method not supported
java.sql.SQLException: Method not supported
    at org.apache.hive.jdbc.HiveResultSetMetaData.isSigned(HiveResultSetMetaData.java:141)
    at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:290)
    at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:240)
    at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:226)
    at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295)
    at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1773)
    at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1578)
    at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:601)
    at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
    at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

Sqoop 不是將數據從一個配置單元實例傳輸到另一個配置單元實例的工具。 似乎您的要求是將 hive 中的數據從一個集群傳輸到另一個集群。 這可以使用 hadoop distcp 來實現。 sqoop 本身的完整形式是 SQl 到 hadOOP,反之亦然。

如果要將多個數據庫和表從一個 hive 遷移到另一個 hive 實例,最好的方法是使用 hadoop distcp 傳輸數據並觸發第二個 hive 實例中的 DDL。 如果您手邊沒有 DDL,則無需擔心。 只需轉儲 Metastore 數據庫即可。 使用記事本或文本板打開轉儲文件 將 hdfs uri 替換為新的 hdfs uri。 將 mysql 轉儲導入到第二個 hive 實例的 Metastore。 刷新表。 以下博客文章中給出了一個示例https://amalgjose.wordpress.com/2013/10/11/migrating-hive-from-one-hadoop-cluster-to-another-cluster-2/

distcp 僅適用於外部表。 對於托管表(事務性),請使用導出導入 DDL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM