
hive
Lvbey
Lvbey Never Give Up/。
展开
-
Sqoop到Oracle 一次查询/执行多个命令
sqoop eval \ --connect ${CONN_VAR} \ --username ${USERNAME} \ --password ${PASSWORD} --verbose \ --query " DECLARE BEGIN ${BATCH_SQL} END; "# ${BATCH_SQL} 中的语句用逗号隔...原创 2021-08-30 16:52:34 · 498 阅读 · 0 评论 -
解决Sqoop导出数据报错 Can’t export data, please check failed map task logs
完美解决方案:正确定位到sqoop导数失败原因(可定位到具体数据)原创 2021-08-23 15:35:04 · 2469 阅读 · 0 评论 -
正确定位到sqoop导数失败原因(可定位到具体数据)
1、sqoop导数时,添加额外的配置参数sqoop export -Dorg.apache.sqoop.export.text.dump_data_on_error=true \ --username ${USERNAME} \ ......#其他的配置-Dorg.apache.sqoop.export.text.dump_data_on_error=true该配置可以让你在导数出错的时候将导致错误的具体数据展示出来2、进入正确的log目录 进入失败的...原创 2021-08-23 15:10:47 · 3639 阅读 · 0 评论 -
解决Sqoop导出数据报错Can‘t parse input data 和 NoSuchElementException
原因:多为分隔符导致的字段错位造成数据无法转换问题解决方案在确保hive端的分隔符和sqoop导出指定的分隔符(比如--input-fields-terminated-by=‘\011’)一致之后(建表和sqoop语句都没问题)——在hive的表最后加一个字段,比如可以为day_id,month_id,这类长度固定且不易变化的值,重新insert into overwrite之后查询这个字段,如果有异常,一般可以排查出来。比如我今天遇到的这个情况就是,我在最后加了一个字段month_id,进原创 2021-08-05 17:31:31 · 2345 阅读 · 0 评论 -
Hive推数到Oracle的分区表
需求前提数据量过千万级; 要求少用索引(因为索引的引入会导致推数效率低下); 优化的字段是非数字和时间型的(数字或时间型字段,直接用Oracle的动态分区即可,参见:Oracle 11g 的 interval 分区)推数到分区表的前提Oracle需要在开始之初便建立分区表,因为分区表不能动态由非分区表转化; 推数过程中需要动态增加或者删除分区数据,建议采用一个存储过程来实现; 需要循环推数,因为Hive只能一次性推一个分区到Oracle端(或者说目前是这样设计的);干正事建立Orac原创 2021-07-05 17:50:45 · 415 阅读 · 0 评论 -
Hive load data 时中文乱码的解决
检查建表的字段分隔符,我的是制表符(\t)所以在保存为文本文件的时候要注意是要用制表符(\t)分隔原创 2021-06-17 17:40:04 · 1446 阅读 · 0 评论 -
Shell编写hive脚本时,特殊字符“\”的处理
#!/bin/bashHIVE_SQL=" SELECT * FORM T1 left join T2 --注意,这里因为是shell的字符串,要用\\转义\d,因为shell中 \\ 代表 \ --shell \ 将特殊符号字符的特殊含义屏蔽掉,使其还是原字符 --\\\d ,第一个\是shell中转义,第二个\是sql中字符串转义,第三个才是\d ON regexp_replace(T1.fund_type,'_(\\\d)+','') = T2.原创 2021-06-10 10:40:12 · 812 阅读 · 0 评论