Hive 配置单元增量导入数据-新列

Hive 配置单元增量导入数据-新列,hive,sqoop,Hive,Sqoop,如何使用Sqoop将表从sql server导入到配置单元,并处理是否添加了任何新列,以及如何将新列数据加载到配置单元,而不丢失数据?使用此命令将数据直接导入配置单元: sqoop import --connect "jdbc:sqlserver://11.11.111.11;databaseName=dswFICO" \ --username sqoop\ --password sqoop \ --driver com.microsoft.sqlserver.jdbc.SQLServerDri

如何使用
Sqoop
将表从
sql server
导入到
配置单元
,并处理是否添加了任何新列,以及如何将新列数据加载到
配置单元
,而不丢失数据?

使用此命令将数据直接导入配置单元:

sqoop import --connect "jdbc:sqlserver://11.11.111.11;databaseName=dswFICO" \ --username sqoop\ --password sqoop \ --driver com.microsoft.sqlserver.jdbc.SQLServerDriver \ --table KNA1 \ --split-by rowkey --hive-import -m 1

如果您不想在加载时丢失源数据副本,那么最好的方法是在现有hdfs目录上创建外部表,或者您也可以创建源目录的副本,并创建一个指向新目录位置的外部配置单元表。

您可以通过sqoop导入实现外部表,基本上,您将把数据放入hdfs中的一个文件中,并且必须在表的顶部构建一个外部表

简单的sqoop导入示例,它将数据获取到hdfs,但与hive无关

$ sqoop import \
--connect jdbc:mysql://localhost/userdb \
--username root \
--table emp_add \
--m 1 \
--target-dir /queryresult

在/queryresult路径中有数据之后,只需在该位置上构建一个外部表

嗨,谢谢你的快速回复,我已经完成了。我可以使用Sqoop成功地将数据从SQL导入配置单元。我的问题是:例如,最初一个SQL表有5列,其中包含5列数据,我可以使用sqoop导入数据。现在SQL表更改为8列(3个新列),现在我将如何将新列导入配置单元中的现有表。我需要加载新的列数据(3列数据),而不会丢失配置单元表中的任何数据。可用于加载数据的方法有哪些。Sqoop目前不支持配置单元外部表。任何使用scoop的导入都会创建托管表,在现实场景中,拥有外部表非常重要。到目前为止,我们必须执行ALTER语句来更改表属性,使表成为外部表,这并不是什么大问题,但最好在scoop中有一个选项来指定所需的表类型。