我使用apache sqoop将数据从teradata(RDBMS)导入到hive。用于导入的常用分隔符(如",", "|", "~"
)存在于表中。有没有办法在apache sqoop中使用多个字符作为分隔符。
为避免这种情况,我在sqoop import命令中使用了--escaped-by "\t"
和--fields-terminated-by ","
参数。那么有没有办法来实现这一目标。我在sqoop import中使用的"\t"
。
答案 0 :(得分:3)
每当我遇到包含大数据字段的挑战表时,我都会使用'\ b'分隔符,这些数据字段包含可能包含TABS和CR / LF字符的文本。 '\ b'是BACKSPACE,在大多数数据库中很难插入到字符中。
以下是我使用的sqoop命令的示例:
sqoop import
--connect "jdbc:sqlserver://myserver;DatabaseName=MyDB;user=MyUser;password=MyPassword;port=1433"
--warehouse-dir=/user/MyUser/Import/MyDB
--fields-terminated-by '\b' --num-mappers 8
--table training_deficiency
--hive-table stage.training_deficiency
--hive-import --hive-overwrite
--hive-delims-replacement '<newline>'
--split-by Training_Deficiency_ID
--outdir /home/MyUser/sqoop/java
--where "batch_update_dt > '2016-12-09 23:06:44.69'"