hive insert overwrite 多出来几行乱码数据


0

通过hive的insert overwrite导入数据,查表多出来几行乱码数据, 同时hdfs里边生成三个lzo文件, 我把lzo解压, 一个文件是UTF8编码,另外两个文件是latin1编码,

两个问题

  1. 为什么会多出来几行乱码数据。
  2. 为什么hdfs里边的文件格式不一样

2 答案

0

建表的时候,指定表的存储格式为lzo。
看hdfs上看到的Latin1编码的文件,应该是lzo的索引文件。看到的乱码应该是hive把索引文件当成了数据文件导致的。


0

建表的时候已经指定了lzo

CREATE EXTERNAL TABLE mini_game_log_temporary( datatime string COMMENT '时间',
appid string COMMENT '应用ID',
playerid string COMMENT '',
info string COMMENT '具体信息')
PARTITIONED BY (
ds string,
timezone string,
app_id string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'field.delim'='/t',
'serialization.format'='/t')
STORED AS INPUTFORMAT
'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://master:9000/usr/hive/warehouse/original.db/mini_game_log_temporary';

而且我还没生成索引文件,都是数据文件


我来回答