sqoop从配置单元导入到配置单元

xfyts7mz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(450)

我们可以使用sqoop将表从配置单元数据源导入到配置单元数据源吗。
查询式-

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)
e5nqia27

e5nqia271#

sqoop不是将数据从一个配置单元示例传输到另一个配置单元示例的工具。似乎您的需求是将配置单元中的数据从一个集群传输到另一个集群。这可以使用hadoop distcp实现。sqoop本身的完整形式是sql到hadoop,反之亦然。
如果要将多个数据库和表从一个配置单元迁移到另一个配置单元示例,最好的方法是使用hadoop distcp传输数据并触发第二个配置单元示例中的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/

thtygnil

thtygnil2#

distcp将只适用于外部表。对于托管表(事务性),请使用导出-导入ddl。

相关问题