3

如何使用 Sqoop 将数据从关系数据库导入到沙盒中的 Hive。我已经在我的电脑上安装了 Horton Works 沙盒。Nw 我想知道这个迁移。我参考了这个链接http://hortonworks.com/kb/using-apache-sqoop-for-data-import-from-relational-dbs/ 但我对一些疑问感到困惑 1,是否需要任何 Sqoop 软件才能运行?2,在上面提到的链接中,有一些代码我将把这些代码放在哪里?在 Hive 查询窗口中?3,是否可以完全迁移数据库(或仅在时间表上)?4,存储过程和 Viwes 我将把这些都保存在哪里呢?

4

2 回答 2

6

Sqoop 预装了最新的 Horton Sandbox。你必须做以下事情。如果某些情况您可能需要权限(不允许 Host 'xxx.xx.xxx.xxx' 连接到此 MySQL 服务器)。否则执行以下操作 - 将数据从 RDBMS(MYSQL、ORACLE 等)导入和导出到 HDFS/HIVE/HBASE

先决条件

  • 阿帕奇Hadoop
  • Apache Sqoop(兼容 Hadoop 版本)
  • Apache Hive(可选)
  • Apache HBase(可选)
  • Apache HCatalog(可选)
  • JDBC/ODBC 连接器

对于所有 RDBMS,连接 URL 会更改,并且所有命令行参数保持不变。您需要下载特定的 JDBC/ODBC 连接器 JAR 并将其复制到 $SQOOP_HOME/lib


MySQL

下载 mysql-connector-java.jar 并放入 $SQOOP_HOME/lib 文件夹

cp mysql-connector-java-5.1.18-bin.jar /usr/local/hadoop/sqoop-1.4.3-cdh4.4.0/lib/

期望您在 MySQL 表中有数据。

从 SQOOP 检索 MySQL 中可用的数据库列表

sqoop list-databases --connect jdbc:mysql://localhost:3306/  --username root -P

MySQL 到 HDFS 导入

有主键:

sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName

没有主键:

sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName  -m 1

MySQL 到 Hive 导入

有主键:

sqoop-import  --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName  --hive-table tableName --create-hive-table --hive-import --hive-home path/to/hive_home

没有主键:

sqoop-import  --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName  --hive-table tableName --create-hive-table --hive-import --hive-home  path/to/hive_home -m 1

MySQL 到 HBase 导入

导入所有列:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName  --column-family hbase_table_col1 --hbase-create-table

HBase 导入几列

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --columns column1,column2 --column-family hbase_table_col1 --hbase-create-table

使用主键到 HBase:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --column-family hbase_table_col1 --hbase-row-key column1 –hbase-create-table

到没有主键的 Hbase:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --columns column1,column2 --column-family hbase_table_col --hbase-row-key column1 --hbase-create-table

从 HDFS 导出到 MySQL

所有 Hive/HBase/HDFS 都一样:因为 Hive 表只是 HDFS 中的目录。所以你只是将一个目录导出到 MySQL

sqoop export --connect jdbc:mysql://localhost:3306/test_db --table tableName  --export-dir /user/hive/warehouse/tableName --username root --password password -m 1 --input-fields-terminated-by '\001'

SQL 服务器

连接网址:

sqoop import --connect 'jdbc:sqlserver://;username=dbuser;password=dbpasswd;database=' --table --target-dir /path/to/hdfs/dir --split-by -m 1

从 Microsoft 网站下载连接器

http://www.microsoft.com/en-us/download/confirmation.aspx?id=11774

将它放在 $SQOOP_HOME/lib 中


甲骨文

连接网址:

sqoop import --connect "jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=myhost)(port=1521))(connect_data=(service_name=myservice)))" \
--username USER --table SCHEMA.TABLE_NAME --hive-import --hive-table SCHEMA.TABLE_NAME \
--num-mappers 1 --verbose -P \

IBM DB2

下载 DB2Driver 并将其放在 $SQOOP_HOME/lib 中

    sqoop import --driver com.ibm.db2.jcc.DB2Driver --connect jdbc:db2://db2.my.com:50000/testdb --username db2user --db2pwd --table db2tbl --split-by tbl_primarykey --target-dir sqoopimports

    sqoop export --driver com.ibm.db2.jcc.DB2Driver --connect jdbc:db2://db2.my.com:50000/myDB --username db2user --password db2pwd --table db2tbl --export-dir /sqoop/dataFile.csv

不同 RDBMS 的不同连接字符串

  • 数据库版本--直接支持?连接字符串匹配

  • HSQLDB 1.8.0+ 没有 jdbc:hsqldb:*//

  • MySQL 5.0+ 是 jdbc:mysql://

  • Oracle 10.2.0+ 没有 jdbc:oracle:*//

  • PostgreSQL 8.3+ 是(仅导入) jdbc:postgresql://


于 2014-06-21T03:41:10.520 回答
2

1-您将需要 Microsoft SQL Server Connector for Apache Hadoop 来执行可从此处下载的操作。

2- 您必须从 Sqoop shell 发出导入命令。我建议您浏览一次Sqoop 文档,特别是第7.2.10节,它告诉我们有关将数据导入 Hive 的信息。

3- 你可以:

4-一旦你的数据进入 Hadoop 集群,你就不能再使用你的 SQL 过程了。存储过程语言通常对结果集执行更多逻辑。因为 hive 结果集通常很大,所以聚合和转换是使用函数或流式完成的。您需要考虑一些替代方案。但是您可以在 Hive 中查看视图。要了解有关 Hive 视图的更多信息,请访问此处

高温高压

于 2013-06-12T12:47:13.247 回答