Пользователь равен Зарезервированное ключевое слово В случае, если мы используем ключевые слова в улье, нам нужно заключить ключевое слово с `(backticks)
Пример:
` user`
Попробуйте с приведенным ниже оператором создания таблицы
CREATE TABLE tweets (
id BIGINT,
created_at STRING,
source STRING,
favorited BOOLEAN,
retweeted_status STRUCT< text : STRING, `user` : STRUCT<screen_name : STRING,name : STRING>, retweet_count : INT>,
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 'org.apache.hive.hcatalog.data.JsonSerDe'
Location '/user/flume/tweets/';
Я могу создать таблицу с более высоким ddl:
desc tweets;
+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+--+
| col_name | data_type | comment |
+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+--+
| id | bigint | from deserializer |
| created_at | string | from deserializer |
| source | string | from deserializer |
| favorited | boolean | from deserializer |
| retweeted_status | struct<text:string,user:struct<screen_name:string,name:string>,retweet_count:int> | from deserializer |
| entities | struct<urls:array<struct<expanded_url:string>>,user_mentions:array<struct<screen_name:string,name:string>>,hashtags:array<struct<text:string>>> | from deserializer |
| text | string | from deserializer |
| user | struct<screen_name:string,name:string,friends_count:int,followers_count:int,statuses_count:int,verified:boolean,utc_offset:int,time_zone:string> | from deserializer |
| in_reply_to_screen_name | string | from deserializer |
+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+--+
ОБНОВЛЕНИЕ:
Hive работает как схема при чтении , когда мы запускаем оператор выбора hive ищет файлы в каталоге , куда указывает таблица (/ user / hive / warehouse / tweets /) , чтобы затем прочитать эти данные в соответствии с вашим оператором ddl , но в этом случае данныеотсутствует в каталоге, поэтому оператор select не возвращает никаких записей.
Чтобы исправить эту проблему:
Option1. Переместите данные из каталога /user/flume/tweets/
в /user/hive/warehouse/tweets/
, после чего вы сможете выбратьct данные из таблицы.
`hadoop fs -mv /user/flume/tweets/ /user/hive/warehouse/tweets/`
(или)
Option2. Нам нужно создать таблицу кустов поверх /user/flume/tweets/
в этом каталоге вы сможете увидеть данные в таблице твитов (для этого используйте приведенный выше оператор создания таблицы).