
大数据
Lvbey
Lvbey Never Give Up/。
展开
-
解决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生产环境distcp同步HDFS数据到测试环境的脚本
#!/bin/bash#转小写typeset -l table_nmtable_nm=$1#用法事例usage(){ echo "USAGE: $0 db名.表名 [分区键=分区值]" echo "EXAMPLE: $0 mreport_global.dim_food_area" echo "EXAMPLE: $0 mreport_poultry.dmf_sales_order_detail op_month=202011" e.原创 2021-07-30 15:32:40 · 622 阅读 · 0 评论 -
关于Sqoop-Cannot understand character argument: \u0001
sqoop导出数据,报Cannot understand character argument: \u0001解决:#不要用'\u0001',换成 '\001'#export用:--input-fields-terminated-by '\001'#import用--fields-terminated-by '\001'解决!原创 2021-07-27 17:46:30 · 750 阅读 · 0 评论 -
Hive推数到Oracle的分区表
需求前提数据量过千万级; 要求少用索引(因为索引的引入会导致推数效率低下); 优化的字段是非数字和时间型的(数字或时间型字段,直接用Oracle的动态分区即可,参见:Oracle 11g 的 interval 分区)推数到分区表的前提Oracle需要在开始之初便建立分区表,因为分区表不能动态由非分区表转化; 推数过程中需要动态增加或者删除分区数据,建议采用一个存储过程来实现; 需要循环推数,因为Hive只能一次性推一个分区到Oracle端(或者说目前是这样设计的);干正事建立Orac原创 2021-07-05 17:50:45 · 415 阅读 · 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 评论 -
Flink中自定义实现SUM函数时无法正确累计的错误分析
错误示范:package udf;import org.apache.flink.table.functions.AggregateFunction;//第一个Double为返回值类型,第二个Double为累加器的类型public class AggFuncWithBaseType extends AggregateFunction<Double, Double> { @Override public Double getValue(Double acctor)原创 2021-03-30 11:02:16 · 765 阅读 · 1 评论