Анализ настроений в твиттере с использованием hadoop и pig - PullRequest
0 голосов
/ 03 мая 2019

Твиты из твиттера хранятся в формате hdf в hadoop. Твиты должны быть обработаны для анализа настроений. Твиты в формате hdf находятся в формате avro, поэтому их необходимо обрабатывать с помощью загрузчика Json. Но в сценариях Pig твиты из hdf не читаются. После изменения файлов jar сценарий pig показывает сообщение об ошибке

При использовании этих следующих jar-файлов по сценарию pig происходит сбой.

REGISTER '/home/cloudera/Desktop/elephant-bird-hadoop-compat-4.17.jar';

РЕГИСТРАЦИЯ '/home/cloudera/Desktop/elephant-bird-pig-4.17.jar';

REGISTER '/home/cloudera/Desktop/json-simple-3.1.0.jar';

Это еще один набор файлов jar, с которыми он не выходит из строя, но данные также не читаются.

REGISTER '/home/cloudera/Desktop/elephant-bird-hadoop-compat-4.17.jar';

REGISTER '/home/cloudera/Desktop/elephant-bird-pig-4.17.jar';

REGISTER '/home/cloudera/Desktop/json-simple-1.1.jar';

Вот все мои команды сценариев pig, которые я использовал:

tweets = LOAD '/user/cloudera/OutputData/tweets' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;

B = FOREACH tweets GENERATE myMap#'id' as id ,myMap#'tweets' as tweets;

tokens = foreach B generate id, tweets, FLATTEN(TOKENIZE(tweets)) As word;

dictionary = load ' /user/cloudera/OutputData/AFINN.txt' using PigStorage('\t') AS(word:chararray,rating:int);

word_rating = join tokens by word left outer, dictionary by word using 'replicated';

describe word_rating;

rating = foreach word_rating generate tokens::id as id,tokens::tweets as tweets, dictionary::rating as rate;

word_group = group rating by (id,tweets);

avg_rate = foreach word_group generate group, AVG(rating.rate) as tweet_rating;

positive_tweets = filter avg_rate by tweet_rating>=0;
DUMP positive_tweets;

negative_tweets = filter avg_rate by tweet_rating<=0;

DUMP negative_tweets;

Ошибка при выгрузке над командой твитов для первого набора файлов JAR:

Input (s): Не удалось прочитать данные из "/ user / cloudera / OutputData / tweets"

Выход (ы): Не удалось получить результат в "hdfs: //quickstart.cloudera: 8020 / tmp / temp-1614543351 / tmp37889715"

Counters:
Total records written : 0
Total bytes written : 0
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0

Job DAG:
job_1556902124324_0001


2019-05-03 09:59:09,409 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Failed!
2019-05-03 09:59:09,427 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias tweets. Backend error : org.json.simple.parser.ParseException
Details at logfile: /home/cloudera/pig_1556902594207.log

Ошибка при выгрузке вышеуказанной команды твитов для второго набора файлов JAR:

Input (s): Успешно прочитано 0 записей (5178477 байт) из: "/ user / cloudera / OutputData / tweets"

Выход (ы): Успешно сохранено 0 записей в: "hdfs: //quickstart.cloudera: 8020 / tmp / temp-1614543351 / tmp479037703"

Counters:
Total records written : 0
Total bytes written : 0
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0

Job DAG:
job_1556902124324_0002


2019-05-03 10:01:05,417 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Success!
2019-05-03 10:01:05,418 [main] INFO  org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS
2019-05-03 10:01:05,418 [main] INFO  org.apache.pig.data.SchemaTupleBackend - Key [pig.schematuple] was not set... will not generate code.
2019-05-03 10:01:05,428 [main] INFO  org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1
2019-05-03 10:01:05,428 [main] INFO  org.apache.pig.backend.hadoop.executionengine.util.MapRedUtil - Total input paths to process : 1

Ожидаемый результат был отсортирован как положительные, так и отрицательные твиты, но с ошибками. Пожалуйста, помогите. Спасибо.

1 Ответ

0 голосов
/ 06 мая 2019

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias tweets. Backend error : org.json.simple.parser.ParseException Обычно это указывает на синтаксическую ошибку в сценарии Pig.

Ключевому слову AS в операторе LOAD обычно требуется схема.myMap в вашем операторе LOAD не является допустимой схемой.

См. https://stackoverflow.com/a/12829494/8886552 для примера JsonLoader.

...