我尝试使用org.apache.hive.hcatalog.data.JsonSerDe从json文件创建一个表到hive。
首先,将文件从本地加载到HDF。这是Hive中的代码:
CREATE EXTERNAL TABLE tweet8(
user struct<userlocation:string, id:string, name:string>,
tweetmessage string,
createddate string,
geolocation string)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION '/tmp/hive/hello';
Hive复制除最后一个对象之外的文件中存在的记录。例如,在我的文本文件中,有4个JSON对象A,B,C,D;在Hive中加载后,我有A,A,B,B,C,C,D。
根据我的理解,当从本地加载文件到HDFS时,Hadoop会创建多个复制。基于这些复制,我们在Hive表中有重复。该问题有两种解决方案:
1 - 将文件从本地上传到HDFS时,将复制因子设置为1;
2 - 在创建表之后,我在上面做了一个SELECT Distinct查询 tweet8表创建一个没有重复的新表。
哪种做法最好?
感谢您的任何建议! (请随意询问您是否需要进一步澄清我的问题并抱歉我的英语不好)