Hive Sqoop增量导入失败

Hive Sqoop增量导入失败,hive,sqoop,Hive,Sqoop,我有下表:MYSQL中的mergetab id | name | city | rectime | ---+-----------+-------------+---------------------+ 1 | Sidhartha | Hyderabad | 2017-04-18 15:31:22 | 2 | Saketh | Bengaluru | 2017-04-18 15:32:37 | 3 | Sunny |

我有下表:MYSQL中的mergetab

id | name      | city        | rectime             |
---+-----------+-------------+---------------------+
 1 | Sidhartha | Hyderabad   | 2017-04-18 15:31:22 |
 2 | Saketh    | Bengaluru   | 2017-04-18 15:32:37 |
 3 | Sunny     | Mumbai      | 2017-04-18 15:32:57 |
 4 | Bobby     | Delhi       | 2017-04-18 15:33:15 |
我在其中插入了一条记录,如下所示:

id | name      | city        | rectime             |
---+-----------+-------------+---------------------+
 1 | Sidhartha | Hyderabad   | 2017-04-18 15:31:22 |
 2 | Saketh    | Bengaluru   | 2017-04-18 15:32:37 |
 3 | Sunny     | Mumbai      | 2017-04-18 15:32:57 |
 4 | Bobby     | Delhi       | 2017-04-18 15:33:15 |
 5 | Madhavi   | Dharmavaram | 2017-04-18 16:57:09 |
我正在尝试使用以下命令执行sqoop增量导入:

sqoop import --connect jdbc:mysql://127.0.0.1/mydb --table mergetab --username root --password cloudera --hive-import --hive-table mergetab --incremental-append --check-column id --last-value $(hive -S -e "select max(id) from mergetab");
我得到了以下错误,我无法理解我的sqoop命令有什么问题。 错误:


我在Cloudera虚拟机上练习这个。有人能告诉我我在这里犯了什么错误吗?

您的代码行
--last value$(hive-S-e“从mergetab中选择max(id))
的问题是,即使在静默模式下,hive也会始终打印标题/日志信息,所以last value始终会得到如下值-

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hive/2.1.0/libexec/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hadoop/2.7.3/libexec/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
5
您需要编写一些twisted shell脚本来提取最后一行,或者可以使用beeline和
showHeader
以及
outputformat
直接获取分配给变量的值,如下所示

--last value $(beeline --showHeader=false --outputformat=tsv2 -e "your query")

您是否只是尝试在shell中运行
hive-S-e“…wtf…”
命令,并查看它生成了什么类型的垃圾?我尝试过。失败:ParseException行1:0无法识别“配置单元”-“S”附近的输入。但即使没有'-S',我仍然会收到相同的错误消息。我在lastvalue中给出了这条消息:--last value$(beeline--showHeader=false--outputformat=tsv2-e“从mergetab中选择max(id)),我会收到一条错误消息:请将$ACCUMULO\u HOME设置为ACCUMULO安装的根目录。17/04/21 12:40:22信息sqoop.sqoop:运行sqoop版本:1.4.6-cdh5.8.0缺少选项的参数:我认为最后一个值是警告。要消除这种情况,您需要将$ACCUMULO_设置为HOME
--last value $(beeline --showHeader=false --outputformat=tsv2 -e "your query")