我只是用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 是关于最近发布的电影死池推特数据。
2条答案
按热度按时间xe55xuns1#
您需要在pig中的jar下面注册,这个jar包含您试图访问的相应类。
elephant-bird Pig4.1.jar
编辑:正确的步骤。
我在我的本地集群上使用了上述步骤,它工作得很好,所以您需要在运行负载之前添加这些jar。
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。
加载tweet后,您可以通过转储来查看它们