【问题标题】:How to import tables from sql server through sqoop to hdfs如何通过sqoop从sql server导入表到hdfs
【发布时间】:2017-06-13 14:30:04
【问题描述】:

我已经安装了 hadoop、hive、sqoop。我将表从我的数据库导入到 hdfs 但无法将其导入配置单元。我需要在 hive 中配置任何文件吗?此外,当我浏览网页时,显示的是 MySQL 的配置,但我使用的是驱动程序 jdbc:sqlserver。 任何人都请帮助我,因为我已经坚持了很多天了。

【问题讨论】:

    标签: hadoop hive sqoop


    【解决方案1】:

    jdbc:mysql 是用于 mysql 的,它不适用于 sqlserver,我已经尝试使用它,但它给出了错误。我试过下面的命令,效果很好。

    命令 - 导入

    从数据库表复制数据到 HDFS 文件系统

    在下面的例子中,我们的数据库和hdfs配置是:

    • 服务器名称:-labDB
    • 数据库名称:- 演示
    • SQL 用户名:- sqoop
    • SQL 密码:- simp1e
    • 驱动程序类名:- com.microsoft.sqlserver.jdbc.SQLServerDriver
    • 表:- dbo.customers
    • 目标目录:/tmp/dbo-customer(HDFS 文件夹名称)

    语法:

      sqoop import --connect jdbc:sqlserver://sqlserver-name \
          --username <username> \
          --password <password> \
          --driver   <driver-manager-class> \
          --table    <table-name> \
          --target-dir  <target-folder-name>
    

    示例:

      sqoop import --connect "jdbc:sqlserver://labDB;database=demo" \
           --username sqoop  \
           --password simp1e \
           --driver   com.microsoft.sqlserver.jdbc.SQLServerDriver \
           --table    "dbo.customer" \
           --target-dir  "/tmp/dbo-customer"
    

    https://danieladeniji.wordpress.com/2013/05/06/hadoop-sqoop-importing-data-from-microsoft-sql-server/

    【讨论】:

      【解决方案2】:

      您应该能够使用 --hive-import 标志导入表并在 Hive 中查看它 检查你是否定义了所有的全局变量,HADOOP_HOME、SQOOP_HOME 和 HIVE_HOME 如果它不适合您,同时您可以随时使用 CREATE EXTERNAL TABLE 语法在 Hive 中使用您导入的数据。

      【讨论】:

        【解决方案3】:

        你是否在 sqoop 命令行中使用了特定的 --hive-import 开关?

        Sqoop import --connect 'jdbc:sqlserver://sqlservername.mycompany.com;username=hadoop;password=hadoop;database=hadoop' --table dataforhive --hive-import

        【讨论】:

          【解决方案4】:

          只需在 hdfs 的路径上创建一个外部配置单元表。或使用 --hive-import

          这两者中的任何一个都应该适合你。

          【讨论】:

            【解决方案5】:

            我也遇到了同样的问题,我可以将我的 MYSQL 表存储在 HDFS 中,但无法将其存储在 hive 中。我使用以下命令简单地将表导入配置单元中,而无需再次将其存储在 HDFS 中,它对我有用。

            sqoop import --connect jdbc:mysql://ipAddress:portNo/mysqldatabase --table mysqltablename --username mysqlusername --password mysqlpassword --hive-import --hive-table hivedatabase.hivetablename
            

            【讨论】:

            • 这也会将其导入 HDFS,但在 Hive Metastore 的默认目录中,即 Hive 为您管理数据的存储位置。这与 CREATE TABLE 和 CREATE EXTERNAL TABLE 的区别有关。也看到这个问题stackoverflow.com/questions/27991258/…
            猜你喜欢
            • 2020-12-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多