Невозможно отладить скрипт HQL - PullRequest
0 голосов
/ 04 мая 2018

Итак, я пытаюсь создать схему 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 к имени переменной. Но это не похоже на работу. Возможно, я что-то упускаю из-за этого.

1 Ответ

0 голосов
/ 04 мая 2018

Я попробовал ваш DDL двух таблиц, и он работал для меня без каких-либо изменений. Можете ли вы повторить это снова? если возможно, приложите файл JSon, чтобы я мог попробовать от начала до конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...