首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Sqoop将数据从关系数据库导入沙箱Hive?

如何使用Sqoop将数据从关系数据库导入沙箱Hive?
EN

Stack Overflow用户
提问于 2013-06-12 19:19:37
回答 2查看 11.2K关注 0票数 3

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 20:47:13

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

2-您必须从Sqoop shell发出import命令。我建议你浏览一遍Sqoop document,特别是7.2.10一节,它告诉我们如何将数据导入配置单元。

3-你可以:

使用import-all-tables

  • export数据从HDFS导入关系数据库,使用sqoop-export.

  • 从数据库导入所有表

4-一旦你的数据进入Hadoop集群,你就不能再使用你的SQL过程。存储过程语言通常会对结果集执行更多的逻辑操作。因为hive结果集通常很大,所以聚合和转换都是通过函数或streaming.You来完成的,因此需要考虑一些替代方案。但您可以在Hive中查看视图。要在配置单元中找到更多关于视图的信息,请访问here

HTH

票数 2
EN

Stack Overflow用户

发布于 2014-06-21 11:41:11

Sqoop预装了最新的Horton Sandbox。您必须做以下事情。在某些情况下,您可能需要权限(Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server)。否则,执行以下操作-将数据从RDBMS (MYSQL、ORACLE等)导入和导出到HDFS / HIVE / HBASE

前提条件

  • Apache 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中可用的数据库列表

代码语言:javascript
复制
sqoop list-databases --connect jdbc:mysql://localhost:3306/  --username root -P

MySQL到HDFS导入

有主键:

代码语言:javascript
复制
sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName

没有主键:

代码语言:javascript
复制
sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName  -m 1

MySQL到配置单元导入

有主键:

代码语言:javascript
复制
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

没有主键:

代码语言:javascript
复制
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

到HBase的MySQL导入

让导入所有列:

代码语言:javascript
复制
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导入几列

代码语言:javascript
复制
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操作:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
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 Server

连接URL:

-m导入--连接目录--表--目标目录/路径/到/hdfs/目录--按sqoop拆分1

从Microsoft网站下载连接器

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

将其放在$SQOOP_HOME/lib中

Oracle

连接URL:

代码语言:javascript
复制
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中

代码语言:javascript
复制
    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的不同连接字符串

  • 数据库版本--直接支持?jdbc:oracle:*//
  • PostgreSQL jdbc:hsqldb:*//
  • MySQL 1.8.0+ No jdbc:oracle:*//
  • PostgreSQL 8.3+是connect string 1.8.0+ No connect 5.0+是(仅导入)connect string 10.2.0+ No connect string 8.3+是(仅导入)connect string
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17064144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档