Hadoop 配置单元错误-从表中选择*;

Hadoop 配置单元错误-从表中选择*;,hadoop,hive,bigdata,Hadoop,Hive,Bigdata,我在配置单元中创建了一个已成功创建的外部表 create external table load_tweets(id BIGINT,text STRING) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION '/user/cloudera/data/tweets_raw'; 但是,当我这样做的时候: hive> select * from load_tweets; 我得到以下错误:

我在配置单元中创建了一个已成功创建的外部表

create external table load_tweets(id BIGINT,text STRING)
     ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
     LOCATION '/user/cloudera/data/tweets_raw';
但是,当我这样做的时候:

hive> select * from load_tweets;
我得到以下错误:

失败,出现异常java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException:org.codehaus.jackson.JsonParseException:意外字符“O”代码79:应为有效的数值、字符串、数组、对象、“true”、“false”或“null” 在[来源:java.io。ByteArrayInputStream@5dfb0646;行:1,列:2]**


请告诉我如何解决这个问题。是使用flume创建的twitter o/p文件已损坏还是其他原因?

您还需要做两件事

我可以使用INSERT将数据放入文件中。或者它已经在那里了。无论哪种情况,您都需要

2从Hive、msck修复表加载推文

对于配置单元表,模式和其他关于数据的元信息存储在所谓的配置单元元存储中——实际上,它是一个隐藏的关系数据库。当您对不使用LOCATION关键字(即internal而非external表)创建的配置单元表执行操作时,配置单元将自动更新元存储


但大多数配置单元用例都会将数据附加到使用其他进程更新的文件中,因此外部表很常见。如果在外部创建了新分区,则在使用配置单元查询它们之前,需要使用msck修复表强制元存储与数据的当前状态同步

请提供数据示例。您没有有效的JSON数据-请编辑您的答案,只有在metastore中为表添加新分区时才需要msck修复。不适用于非分区表中的数据;我已经澄清了。文档对此似乎很清楚,但我的经验是,Hive甚至无法识别外部添加的新数据,例如flume、hdsf-put等。。感谢heads up.np:,如果不是在配置单元表上自动反映,您还可以使用analyze table进行任何元数据更新。