sqoop import SqlServer to hive

本文详述了使用sqoop工具将SqlServer数据库中的特定表数据导入至Hive数据库的过程,包括通过--columns参数筛选字段及使用--query参数执行自定义SQL查询的方法,同时提供了sqoop参数的详细解释。

使用sqoop导出SqlServer数据库具体表数据到Hive数据库:

sqoop import语句:

按表中字段筛选$SQOOP_HOME/bin/sqoop import \
--connect 'jdbc:sqlserver://168.16.8.168:5419;database=database_name' \
--username 'user' \
--password '12345678' \
--table dt_tablename \
--columns 'id,createtime,name,mobile' \
--null-string '\\N' \ ##没有这个,导入的数据值都为NULL
--hive-import \
--hive-database hiveDatabase \
--hive-table tablename_h \
--fields-terminated-by '\001' \
--hive-drop-import-delims \

--incremental append \
--check-column id \
--last-value 1 \

--m 2
自主写sql

/bin/sqoop import \
--connect 'jdbc:sqlserver://168.16.8.168:5419;database=database_name' \
--username 'user' \
--password '12345678' \
--query 'select id,name,mobile,source from wx_member' \
--null-string '\\N' \
--hive-import \
--hive-database rt1 \
--hive-table wx_member_hs \
--fields-terminated-by '\001' \
--hive-drop-import-delims \
--incremental append \
--check-column id \
--last-value 1 \
--m 2

注意,用--query When importing a free-form query, you must specify a destination directory with --target-dir.

导入自由格式查询时,必须使用--target dir指定目标目录。

  

sqoop参数说明:

--columns <col,col,col…>Columns to export to table
  
-e,--query <statement>

Sqoop can also import the result set of an arbitrary SQL query.
 Instead of using the --table, --columns and --where arguments, you can specify a SQL statement with the --query argument.

Sqoop还可以导入任意SQL查询的结果集。可以使用--query参数指定SQL语句,而不是使用--table、--columns和--where参数。

注意不和 --table--columns and --where 一起使用。

  
--create-hive-table

If set, then the job will fail if the target hive table exits. By default this property is false.

如果设置,则如果目标配置单元表退出,则作业将失败。默认情况下,此属性为false。

--hive-overwrite

Overwrite existing data in the Hive table.

覆盖配置单元表中的现有数据

--hive-drop-import-delims

Drops \n, \r, and \01 from string fields when importing to Hive.

导入配置单元时,从字符串字段中删除\n、\r和\01。

--incremental

Specifies how Sqoop determines which rows are new. Legal values for mode include append and lastmodified.

指定Sqoop如何确定哪些行是新的。合法值包括mode,append和lastmodified。

--null-string '\\N'

The string to be written for a null value for string columns

要为字符串列的空值写入的字符串

详细信息见官网7.2.12. Importing Data Into Hive

  
  
  
  

更新中。。。

官网地址:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive

<think>好的,用户现在想使用HiveSqoop从SQL Server采集数据,需要了解具体的方法和配置。我之前已经回答过使用DataX的方案,现在用户可能更倾向于Sqoop,所以需要调整方法。 首先,回顾用户提供的引用内容,引用[1]、[3]、[4]提到了Sqoop连接SQL Server的具体命令和配置步骤,包括驱动安装、环境变量设置等。引用[2]则展示了Sqoop与MySQL和Hive的集成示例,特别是增量导入和Hive表创建的方法。用户之前的提问可能已经涉及DataX,但现在明确转向SqoopHive的结合。 接下来,我需要整理使用Sqoop从SQL Server导入数据到Hive的步骤。根据引用[4],安装Sqoop需要配置环境变量和驱动,尤其是SQL Server的JDBC驱动,这点很重要,因为默认Sqoop可能没有。然后,配置Sqoop的环境脚本,确保Hadoop和Hive的路径正确。 然后,导入数据到HDFS或直接到Hive。引用[3]提到使用--warehouse-dir而不是--target-dir,需要特别注意。直接导入到Hive的话,Sqoop会自动创建表,但可能需要处理字段类型映射,尤其是SQL Server的datetime到Hive的timestamp,或者nvarchar到string,这些需要用户注意。 增量导入方面,用户之前的问题提到过增量同步优化,这里可以引用--incremental append和--check-column,类似引用[2]中的例子,但需要调整成SQL Server的语法和时间戳或自增ID。此外,定时任务可以使用crontab或Airflow,确保数据持续同步。 验证数据部分,HDFS和Hive的检查命令需要给出,如hdfs dfs -ls和Hive的SELECT查询。同时,处理常见问题,比如驱动问题、权限问题、字符集和分隔符不一致的情况,这些都可能导致导入失败。 最后,生成相关问题,考虑用户可能的后续疑问,比如实时同步、数据类型差异、外部表与内部表的区别,以及性能优化。这些都能帮助用户进一步解决问题。 需要确保步骤清晰,命令准确,特别是注意SQL Server的特殊配置,比如JDBC URL的格式,使用正确的驱动类名,以及处理可能出现的错误。同时,提醒用户根据实际情况调整参数,如连接信息、表名和路径。</think>### 使用 HiveSqoop 从 SQL Server 采集数据的完整配置方法 --- #### **一、前置条件** 1. **环境准备**: - Hadoop 集群已部署 - HiveSqoop 已安装(需与 Hadoop 版本兼容)[^4] - SQL Server 的 JDBC 驱动 `sqljdbc4.jar` 或 `mssql-jdbc-*.jar` 需复制到 Sqoop 的 `lib` 目录[^4] --- #### **二、Sqoop 配置与数据导入** ##### **1. 全量数据导入到 Hive** ```bash sqoop import \ --connect "jdbc:sqlserver://10.8.10.*:1433;databaseName=UTU" \ --username sa \ --password root \ --table UTU.dbo.UTU_User \ --hive-import \ # 直接导入到 Hive --hive-database test \ # Hive 目标数据库 --hive-table user \ # Hive 目标表 --fields-terminated-by '\t' \ # 分隔符需与 Hive 表定义一致 --m 1 # 使用 1 个 MapTask ``` **关键参数说明**: - `--hive-import`: 自动创建 Hive 表并导入数据(若表不存在)[^3] - `--fields-terminated-by`: 需与 Hive 表的 `ROW FORMAT` 匹配(例如 `\t` 或 `,`) - `--hive-overwrite`: 若需覆盖已有数据可添加此参数 --- ##### **2. 增量数据导入** **方法 1:基于递增 ID** ```bash sqoop import \ --connect "jdbc:sqlserver://10.8.10.*:1433;databaseName=UTU" \ --username sa \ --password root \ --table UTU.dbo.UTU_User \ --hive-import \ --hive-table test.user \ --incremental append
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值