如何使用pig从hdfs加载twitter数据?

nwsw7zdq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(429)

我只是用flume把一些twitter数据流到hdfs中,现在我试着把它加载到pig中进行分析。由于默认的jsonloader函数不能加载数据,所以我在google中搜索一些可以加载这种数据的库。我找到了这个链接并按照那里的说明进行操作。
这是结果

REGISTER '/home/hduser/Downloads/json-simple-1.1.1.jar';

2016-02-22 20:54:46,539 [main] INFO  org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS

其他拖曳命令也一样。
现在当我尝试用这个命令加载数据时

load_tweets = LOAD '/TwitterData/' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;

它告诉我这个错误

2016-02-22 20:58:01,639 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve com.twitter.elephantbird.pig.load.JsonLoader using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
Details at logfile: /home/hduser/pig-0.15.0/pig_1456153061619.log

那么如何求解并正确加载呢?
note:my data 是关于最近发布的电影死池推特数据。

xe55xuns

xe55xuns1#

您需要在pig中的jar下面注册,这个jar包含您试图访问的相应类。
elephant-bird Pig4.1.jar
编辑:正确的步骤。

REGISTER '/home/hdfs/json-simple-1.1.jar';

REGISTER '/home/hdfs/elephant-bird-hadoop-compat-4.1.jar';

REGISTER '/home/hdfs/elephant-bird-pig-4.1.jar';

load_tweets = LOAD '/user/hdfs/twittes.txt' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;

dump load_tweets;

我在我的本地集群上使用了上述步骤,它工作得很好,所以您需要在运行负载之前添加这些jar。

ohtdti5x

ohtdti5x2#

您需要注册3个jar文件,如博客中所示。每个jar都有它自己的重要性。
elephant-bird-hadoop-compat-4.1.jar-utilities用于处理1.x和2.x之间的hadoop不兼容。
elephant-bird-pig-4.1.jar——pig的json加载程序,它将每个json记录加载到pig中。
json-simple-1.1.1.jar——java中可用的json解析器之一
注册jar之后,可以通过以下pig脚本加载tweets。

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

加载tweet后,您可以通过转储来查看它们

dump load_tweets

相关问题