Итак, я пытаюсь создать схему Hive для анализа данных json
, хранящихся в hdfs. Я имею в виду этот блог для создания таблиц Hive, ниже мой Schema.hql
CREATE EXTERNAL TABLE base_tweets4 (
`id` BIGINT,
created_at STRING,
`source` STRING,
favorited BOOLEAN,
retweet_count INT,
retweeted_status STRUCT<
text:STRING,
`user`:STRUCT<screen_name:STRING,name:STRING>>,
`entities` STRUCT<
urls:ARRAY<STRUCT<expanded_url:STRING>>,
user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>,
hashtags:ARRAY<STRUCT<text:STRING>>>,
text STRING,
`user` STRUCT<
screen_name:STRING,
name:STRING,
friends_count:INT,
followers_count:INT,
statuses_count:INT,
verified:BOOLEAN,
utc_offset:INT,
time_zone:STRING>,
in_reply_to_screen_name STRING
)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/twitteranalytics/base/';
CREATE EXTERNAL TABLE incremental_tweets4 (
`id` BIGINT,
created_at STRING,
`source` STRING,
favorited BOOLEAN,
retweet_count INT,
retweeted_status STRUCT<
text:STRING,
`user`:STRUCT<screen_name:STRING,name:STRING>>,
`entities` STRUCT<
urls:ARRAY<STRUCT<expanded_url:STRING>>,
user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>,
hashtags:ARRAY<STRUCT<text:STRING>>>,
text STRING,
`user` STRUCT<
screen_name:STRING,
name:STRING,
friends_count:INT,
followers_count:INT,
statuses_count:INT,
verified:BOOLEAN,
utc_offset:INT,
time_zone:STRING>,
in_reply_to_screen_name STRING
)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/twitteranalytics/incremental/';
CREATE VIEW reconcile_view AS
SELECT t1.* FROM
(SELECT * FROM base_tweets4
UNION ALL
SELECT * FROM incremental_tweets4) t1
JOIN
(SELECT id FROM
(SELECT * FROM base_tweets4
UNION ALL
SELECT * FROM incremental_tweets4) t2
GROUP BY id) s
ON t1.id = s.id
CREATE TABLE candidate_score (
candidate_name STRING,
sentiment_score DOUBLE
)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/twitteranalytics/candidate_score/';
При выполнении вышеуказанного скрипта я получаю сообщение об ошибке следующим образом:
Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive
common-1.1.0-cdh5.13.0.jar!/hive-log4j.properties
OK
Time taken: 49.294 seconds
OK
Time taken: 3.19 seconds
FAILED: ParseException line 21:0 missing EOF at 'CREATE' near 'id'
WARN: The method class
org.apache.commons.logging.impl.SLF4JLogFactory#release() was invoked.
WARN: Please see http://www.slf4j.org/codes.html#release for an explanation.
При поиске в разных блогах я обнаружил, что это может быть ошибкой, поскольку key words
используется в качестве имени переменных, и это может быть решено добавлением backticks
к имени переменной. Но это не похоже на работу. Возможно, я что-то упускаю из-за этого.