2016-06-14 3 views
-1

Я создал одну внешнюю таблицу в улье, которая была успешно создана.Ошибка улья - выберите * из таблицы;

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; 

я получил ошибку ниже:

Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unexpected character ('O' (code 79)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: [email protected]; line: 1, column: 2]**

Пожалуйста, предложите мне, как это исправить. Был ли поврежден твитерский файл o/p, который был создан с использованием лотка, или что-то еще?

+0

Просьба также предоставить пример данных. – leftjoin

+0

У вас нет действительных данных JSON –

ответ

0

Вам нужно будет сделать еще две вещи.

1) Поместите данные в файл (возможно, используя INSERT). Или, возможно, это уже есть. В любом случае, вам тогда нужно

2) из ​​улья, msck repair table load_tweets;

Для таблиц ульи схемы и другая мета-информации о данных сохраняются в том, что называется улой Metastore - это на самом деле реляционная база данных под обложками. Когда вы выполняете операции над таблицами Hive, созданными без ключевого слова LOCATION (то есть внутренних, а не внешних таблиц), Hive автоматически обновляет метастор.

Но большинство прецедентов Hive приводят к добавлению данных к файлам, которые обновляются с использованием других процессов, и, таким образом, внешние таблицы являются общими. Если новые разделы создаются извне, прежде чем вы сможете запросить их с помощью Hive, вам необходимо принудительно синхронизировать метастор с текущим состоянием данных с помощью msck repair table <tablename>;.

+1

- Пожалуйста, отредактируйте свой ответ, 'msck repair' требуется только для добавления новых разделов в метасторе для таблицы. Не для данных в несегментированной таблице – syadav

+0

Thanks; Я уточнил. Документация кажется очевидной, но мой опыт в том, что Hive, похоже, даже не распознает новые данные, добавленные извне (например, flume, 'hdsf -put' и т. Д.). Спасибо за головы. –

+1

np :), вы также можете использовать 'анализ таблицы' для любого обновления метаданных, если автоматически не отражать таблицы улей. – syadav

Смежные вопросы