하이브 형식으로 저장된 HDFS에서 처리 된 데이터를 Sqoop을 사용하여 MySQL 서버로 내보내고 있습니다. 이 코드는 간단하고 간단하지만, 내가하는 일과 상관없이 Sqoop은 필드 구분 기호를 올바르게 인식하지 못합니다. 무엇이 문제가 될 수 있습니까? 내가 HDFS에서 파일을 검사 할 때Sqoop을 사용하여 하이브에서 MySQL로 데이터를 내보낼 수 없습니다
이 필드를 올바르게 \t
(탭) 문자를 사용하여 구분되며,
hive> show create table database.weblog_ag;
OK
CREATE TABLE database.weblog_ag(
visitor_id string,
time array<string>,
url array<string>,
client_time array<string>,
resolution array<string>,
browser array<string>,
os array<string>,
devicetype array<string>,
devicemodel array<string>,
ipinfo array<string>
CLUSTERED BY (
visitor_id)
SORTED BY (
time ASC)
INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://poc/apps/hive/warehouse/database.db/weblog_ag'
TBLPROPERTIES (
'numPartitions'='0',
'numFiles'='96',
'transient_lastDdlTime'='1390411893',
'totalSize'='59633487',
'numRows'='0',
'rawDataSize'='0')
Time taken: 1.871 seconds, Fetched: 31 row(s)
하이브
내 테이블 정의입니다. 이것은이 내 Sqoop을 옵션 파일 구성export
--connect
jdbc:mysql://webserver/fprofile_db
--username
username
--password
password
--table
weblog
--direct
--export-dir
/apps/hive/warehouse/database.db/weblog_ag
--input-fields-terminated-by
'\011'
--columns
visitor_id, time, url, client_time, resolution, browser, os, devicetype, devicemodel, ipinfo
나는 --input-fields-terminated-by
매개 변수에 '\011
, \t
을 사용하려고하지만, 그들 중 누구도 작동하지 않을 것입니다 내가 HDFS
101009a36b3113fa 2014-01-06 08:59:58 http://someurl 2014-01-06 08:56:53 1280x800 Chrome Windows XP General_Desktop Other 115.74.215.116
에서 잡고 샘플 데이터입니다. mySQL에서 내 보낸 결과는 다음과 같습니다.
여기에서 문제가 될 수있는 것은 무엇입니까? 당신이 수출 비록