2017-04-18 4 views
0

다음 표가 있습니다. MYSQL의 mergetab.Sqoop 증분 가져 오기 실패

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 명령에 무엇이 잘못되었는지 알 수 없습니다. 오류 :

17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Error parsing arguments for import: 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: WARN: 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: The 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: method 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: class 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: org.apache.commons.logging.impl.SLF4JLogFactory#release() 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: was 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: invoked. 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: WARN: 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: Please 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: see 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: http://www.slf4j.org/codes.html#release 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: for 
17/04/18 17:35:26 ERROR tool.BaseSqoopTool: Unrecognized argument: an 

Im Cloudera VM에서 이것을 연습합니다. 누구든지 내가 여기서하고있는 실수가 무엇인지 알려 주실 수 있습니까?

+0

에 할당 된 값을 얻기 위해 다음과 같이 당신은 showHeaderoutputformat과 직선을 사용할 수 있습니다 .. .wtf ... "로 명령하십시오. 대체 무슨 짓을했는지 알아? –

+0

나는 노력했다. FAILED : ParseException 라인 1 : 0은 '하이브'근처의 입력을 인식 할 수 없습니다. - ''S '. 하지만 '-S'가 없어도 여전히 동일한 오류 메시지가 표시됩니다. – Sidhartha

답변

1
코드 라인 --last-value $(hive -S -e "select max(id) from mergetab")에 문제가

, 하이브는 항상 인쇄 헤더 /도 자동 모드로 정보를 기록, 그래서 마지막 값은 항상 값처럼 얻을 것이다 - 당신은 약간의 트위스트를 작성하거나 필요

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 

쉘 스크립트는 마지막 행을 추출하거나 직접 단순히`하이브 -S -e "고 실행하려고 했 변수

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

나는 마지막 값에 다음과 같이 썼습니다 : --last-value $ (beeline --showHeader = false --outputformat = tsv2 -e "mergetab에서 max (id) 선택") 오류 메시지가 나타납니다 : $ ACCUMULO_HOME을 설정하십시오 귀하의 Accumulo 설치 루트에 연결하십시오. 17/04/21 12:40:22 정보 sqoop.Sqoop : 실행중인 Sqoop 버전 : 1.4.6-cdh5.8.0 옵션에 대한 누락 된 인수 : last-value – Sidhartha

+0

그럴 것이라고 경고합니다. 사라지게하려면 $ ACCUMULO_HOME을 설정해야합니다. – Pushkr

관련 문제