首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Mysql配置Sqoop?

用Mysql配置Sqoop?
EN

Stack Overflow用户
提问于 2013-08-02 18:40:12
回答 3查看 542关注 0票数 0

我已经成功地安装了SQOOP,现在的问题是如何用RDBMS实现它,以及如何使用SQOOP将数据从RDBMS加载到HDFS。

EN

回答 3

Stack Overflow用户

发布于 2015-10-08 22:30:55

通过使用Sqoop,您可以将数据直接加载到Hive表或将数据存储在HDFS中的某个目标目录中

如果需要将数据从关系型数据库系统复制到某个目录,请使用

sqoop import --连接ConnectionString --用户名用户名--密码Your_Database_Password {如果没有密码,请不要指定它}--表tableName --列查询{如果需要调用特定列}--column_name-dir '/tmp/myfolder‘---query’从表名中选择最小,最大值‘--m 5{将映射器的数量设置为5} --字段--终止于',’‘{您希望您的数据在目标文件中的外观如何}

边界查询:这是您可以指定的内容。如果您不指定它,那么在默认情况下,这将作为一个内部查询运行,它加起来就是一个复杂查询。如果您显式地指定了这一点,那么它就像一个普通查询一样运行,从而提高了性能。

此外,您可能希望限制观察的数量,例如基于列ID,并假设您需要从ID 1到1000的数据。然后使用边界条件和拆分,您将能够限制您的导入数据。

代码语言:javascript
复制
    --boundary-query "select 0,1000 from employee' 
    --split-by ID

Split-By :您可以在Sqoop导入上使用Split by来指定需要拆分的列。缺省情况下,如果不指定此项,sqoop会将表的主键设置为Split_by列。

Split By从表中提取数据,并根据映射器的数量将其存储在不同的文件夹中。默认情况下,映射器的数量为4。

这似乎不是我们想要的,但是如果您有一个复合主键或者根本没有主键,那么sqoop将无法获取数据,并且可能会出错。

注:如果将映射器的数量设置为1,则可能不会遇到任何问题。在这种情况下,由于只有一个映射器,因此不使用拆分条件。所以查询运行得很好。这可以使用--m 1来完成

如果需要将数据从关系型数据库复制到配置单元表,请使用

sqoop import --连接ConnectionString --用户名用户名--密码Your_Database_Password {如果没有密码,请不要指定它}--表tableName --tableName--Your_Database_Password 'Select min,max from table name‘--m 5{将映射器的数量设置为5} --hive-import --hive-table serviceorderdb.productinfo --m 1运行查询而不是调用整个表本身的

sqoop import --连接ConnectionString --用户名用户名--密码查询-- Your_Database_Password 'select name from employees name like '%s‘and $CONDITIONS’--m 5{将映射器的数量设置为5} -- target -dir '/tmp/myfolder‘--ConnectionString-terminated-by ',’{您希望您的数据在目标文件中的外观如何}

您可能会将$CONDITIONS视为额外的参数$conditions。这是因为这次您没有指定表,而是指定了查询显式。当Sqoop运行时,它会搜索边界条件,但找不到。然后,它搜索一个表和一个主键,用于应用边界查询,但同样找不到。因此,我们使用$CONDITIONS来显式指定我们不使用查询,而使用查询结果中的默认边界条件。

  1. 检查您的连接是否正确设置:为此,您可以只调用列表数据库,如果您看到您的数据已填充,则您的连接是正常的。

$ sqoop列表-数据库--连接jdbc:mysql://本地主机/--用户名根目录--密码

不同数据库的连接字符串:

代码语言:javascript
复制
    MYSQL: jdbc:mysql://<hostname>:<port>/<dbname>
           jdbc:mysql://127.0.0.1:3306/test_database

    Oracle :@//host_name:port_number/service_name
            jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename

您可以从以下网址了解更多关于sqoop导入的信息:https://sqoop.apache.org/docs/1.4.1-incubating/SqoopUserGuide.html

票数 2
EN

Stack Overflow用户

发布于 2014-01-29 15:11:23

通过使用sqoop import命令,您可以将数据从关系型数据库导入到HDFS、Hive和HBase

代码语言:javascript
复制
sqoop import --connect jdbc:mysql://localhost:portnumber/DBName --username root --table emp --password root -m1

通过使用此命令,数据将存储在HDFS中。

票数 1
EN

Stack Overflow用户

发布于 2015-04-13 21:37:03

运行sqoop import (将数据从RDBMS加载到HDFS)的示例命令:

Postgres

代码语言:javascript
复制
sqoop import --connect jdbc:postgresql://postgresHost/databaseName
--username username --password 123 --table tableName

MySQL

代码语言:javascript
复制
sqoop import --connect jdbc:mysql://mysqlHost/databaseName --username username --password 123 --table tableName

Oracle*

代码语言:javascript
复制
sqoop import --connect jdbc:oracle:thin:@oracleHost:1521/databaseName --username USERNAME --password 123 --table TABLENAME

SQL Server

代码语言:javascript
复制
sqoop import --connect 'jdbc:sqlserver://sqlserverhost:1433;database=dbname;username=<username>;password=<password>' --table tableName

*如果用户名和表的大小写不正确,Sqoop将找不到表中的任何列。通常,将两者都指定为大写可以解决问题。

阅读Sqoop用户指南:https://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html

我还推荐Apache Sqoop Cookbook。您将学习如何使用导入和导出工具、执行增量导入作业、保存作业、使用jdbc驱动程序解决问题等等。http://shop.oreilly.com/product/0636920029519.do

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18014919

复制
相关文章

相似问题

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