我正在使用Flume收集Twitter流数据并将其以JSON格式存储在HDFS中。我正在尝试使用Hive SerDe将推特数据放入Hive表中,但是却遇到了一个非常令人沮丧的错误。
hive> ADD JAR file:////home/ubuntu/hive/lib/hive-serdes-1.0-SNAPSHOT.jar;
Added [file:////home/ubuntu/hive/lib/hive-serdes-1.0-SNAPSHOT.jar] to class path
Added resources: [file:////home/ubuntu/hive/lib/hive-serdes-1.0-SNAPSHOT.jar]
hive> CREATE EXTERNAL TABLE tweet (
> id BIGINT,
> created_at STRING,
> source STRING,
> favorited BOOLEAN,
> text STRING,
> in_reply_to_screen_name STRING
> )
>
> ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
> LOCATION '/user/ubuntu/twitter/';
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/hadoop/hive/serde2/SerDe
任何帮助将不胜感激。
答案 0 :(得分:0)
我遇到了同样的问题,但是,我找到了解决该问题的方法:
create table tweets(tweet string);
load data inpath 'home/hduser/test.json' into table tweets;
您现在需要使用get_json_object()
来唯一地使用数据。
像下面这样:
select get_json_object(tweet,'$.text') as tweet_text, get_json_object(tweet,'$.created_at') as created_at from tweets;