标签: mapreduce

为仅地图作业运行Hadoop Map Reduce时出错

我想运行一个只有地图的工作Hadoop MapReduce,这是我的代码:

    Configuration conf = new Configuration();
    Job job = new Job(conf);
    job.setJobName("import");

    job.setMapperClass(Map.class);//Custom Mapper
    job.setInputFormatClass(TextInputFormat.class);
    job.setNumReduceTasks(0);

    TextInputFormat.setInputPaths(job, new Path("/home/jonathan/input"));
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

13/07/17 18:22:48 ERROR security.UserGroupInformation: PriviledgedActionException
as: jonathan cause:org.apache.hadoop.mapred.InvalidJobConfException: 
Output directory not set. 
Exception in thread "main" org.apache.hadoop.mapred.InvalidJobConfException: 
 Output directory not set.
Run Code Online (Sandbox Code Playgroud)

然后我试着用这个:

job.setOutputFormatClass(org.apache.hadoop.mapred.lib.NullOutputFormat.class);
Run Code Online (Sandbox Code Playgroud)

但它给了我一个编译错误:

java: method setOutputFormatClass in class org.apache.hadoop.mapreduce.Job 
  cannot be applied to given types;
  required: java.lang.Class<? extends org.apache.hadoop.mapreduce.OutputFormat>
  found: java.lang.Class<org.apache.hadoop.mapred.lib.NullOutputFormat>
  reason: actual argument java.lang.Class
  <org.apache.hadoop.mapred.lib.NullOutputFormat> cannot be converted to 
  java.lang.Class<? extends org.apache.hadoop.mapreduce.OutputFormat> 
  by method invocation …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce

1
推荐指数
1
解决办法
3961
查看次数

控制hadoop映射器输出文件的数量

我有一份hadoop的工作.当工作被陈述时,我开始使用一些映射器.每个映射器都会将一些文件写入磁盘,例如part-m-00000,part-m-00001.据我所知,每个映射器创建一个零件文件.我有大量的数据,所以必须有多个映射器,但我可以以某种方式控制这个输出文件的数量?我的意思是,hadoop将启动,例如10个映射器,但是只有三个部分文件?

我发现这篇文章 如何在Hadoop中输出多个reducers只有一个part文件? 但是有使用旧版本的hadoop库.我正在使用org.apache.hadoop.mapreduce.*中的类,而不是来自org.apache.hadoop.mapred的类.*

我正在使用hadoop版本0.20和hadoop-core:1.2.0.jar

使用新的hadoop API有可能做到这一点吗?

java hadoop mapreduce

1
推荐指数
1
解决办法
6509
查看次数

获得无效的语法错误

我所知道的事先道歉将是一个简单的问题.我是Python的初学者,但已决定用它来编写mapreduce进行情绪分析.

我从这个链接中获取了一个python文件:http://www.alex-hanna.com/tworkshops/lesson-6-basic-sentiment-analysis/给我指导并试图运行它.我遇到问题的特定代码是:

…
if len(sys.argv) &lt; 2:
   print "Usage: avgNReduce.py "
   sys.exit(0)
…
Run Code Online (Sandbox Code Playgroud)

错误是:

   if len(sys.argv) &lt; 2:
                       ^
   SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我认为这是一个需要解决的基本问题,但是尽管谷歌搜索它我真的不知道我是怎么解决这个问题的.我尝试使用冒号而不是半结肠,并确保从复制过程中的&符号是正确的.有任何想法吗?

python mapreduce

1
推荐指数
1
解决办法
2607
查看次数

hadoop - Hadoop jar输入路径问题

我遇到的问题是hadoop jar命令需要一个输入路径,但我的MapReduce作业从数据库获取其输入,因此不需要/有一个输入目录.我已将JobConf输入格式设置为DBInputFormat,但是如何在激活我的工作时表示这一点?

//Here is the command
hadoop jar <my-jar> <hdfs input> <hdfs output>
Run Code Online (Sandbox Code Playgroud)

我有一个输出文件夹,但不需要输入文件夹.有没有办法规避这个?我是否需要编写第二个程序将DB数据拉入文件夹,然后在MapReduce作业中使用它?

java postgresql hadoop mapreduce

1
推荐指数
1
解决办法
821
查看次数

MySQL Cluster与Hadoop一起处理大数据

我想知道使用MySQL Cluster和使用Hadoop框架的优点/缺点.什么是更好的解决方案.我想看看你的意见.

我认为使用MySQL Cluster的优点是:

  1. 高可用性
  2. 良好的可扩展性
  3. 高性能/实时数据访问
  4. 你可以使用商品硬件

而且我没有看到劣势!Hadoop没有任何缺点吗?

Hadoop与Hive的优势在于:

  1. 也是很好的可扩展性
  2. 你也可以使用商品硬件
  3. 能够在异质环境中运行
  4. 使用MapReduce框架进行并行计算
  5. Hive与HiveQL

缺点是:

  1. 没有实时数据访问.分析数据可能需要几分钟或几小时.

因此,在我看来,处理大数据时MySQL集群是更好的解决方案.为什么Hadoop是处理大数据的圣杯?你有什么意见?

hadoop hive mapreduce bigdata mysql-cluster

1
推荐指数
1
解决办法
1万
查看次数

Hive从单个表的数据创建/更新多个表

我在hadoop集群中有10个字段的结构化数据.我需要将这些数据更新为多个hive表,其中包含原始数据中存在的字段子集.

例如:假设数据有字段F1,F2,F3 ...... F10.我有表B1包含字段F1,F2.表B2包含F1,F3.表B3含有F2,F4.

我想知道是否有一种方法可以填充表B1,B2,B3中的数据而无需多次读取A中的数据.

仅供参考:我通过吐出到多个表来对数据进行去规范化,因为这些表将具有数百万条记录,并且我稍后将它们聚合以生成一些统计数据.

目前,我正在考虑以下方法.使用map reduce作业读取数据并使用多种输出格式将不同的键组合写入多个文件,并将这些文件中的数据加载到hive表中.请建议是否有更好的方法来做到这一点.

hadoop hive mapreduce hiveql

1
推荐指数
1
解决办法
2965
查看次数

Hadoop 2.2.0中的MapReduce无法正常工作

安装和配置我Hadoop 2.2.0的伪分布式模式后,一切都在运行,如下所示jps:

$ jps
2287 JobHistoryServer
1926 ResourceManager
2162 NodeManager
1834 DataNode
1756 NameNode
3013 Jps
Run Code Online (Sandbox Code Playgroud)

然后我运行了wordcount示例

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /user/hdfs/file /output
Run Code Online (Sandbox Code Playgroud)

执行frezees(?)如下:

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /user/hdfs/file /output                                          
OpenJDK 64-Bit Server VM warning: You have loaded library /home/hduser/hadoop-src/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
14/04/22 …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce hadoop2

1
推荐指数
1
解决办法
5653
查看次数

MongoDB聚合组数组到键:sum值

您好我是mongodb的新手,并尝试将具有不同类型(int)的对象转换为键值对.

我有这样的集合:

{
    "_id" : ObjectId("5372a9fc0079285635db14d8"),
    "type" : 1,
    "stat" : "foobar"
},
{
    "_id" : ObjectId("5372aa000079285635db14d9"),
    "type" : 1,
    "stat" : "foobar"
},
{
    "_id" : ObjectId("5372aa010079285635db14da"),
    "type" : 2,
    "stat" : "foobar"
},{
    "_id" : ObjectId("5372aa030079285635db14db"),
    "type" : 3,
    "stat" : "foobar"
}
Run Code Online (Sandbox Code Playgroud)

我想得到这样的结果:

{
    "type1" : 2, "type2" : 1, "type3" : 1,
    "stat" : "foobar"
}
Run Code Online (Sandbox Code Playgroud)

当前正在尝试聚合组,然后将类型值推送到数组

db.types.aggregate(
    {$group : {
        _id : "$stat",
        types : {$push : "$type"}
    }}
)
Run Code Online (Sandbox Code Playgroud)

但不知道如何将不同类型相加并将其转换为关键值

/* 0 */
{ …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongodb aggregation-framework

1
推荐指数
1
解决办法
4082
查看次数

从MongoDB中的一个查询中获取多个字段数?

我有一系列事件,其结构如下:

{
    "_id" : ObjectId("537b3ff288f4ca2f471afcae"),
    "Name" : "PREMISES MAP DELETED",
    "ScreenName" : "AccessPointActivity",
    "Timestamp" : NumberLong("1392113758000"),
    "EventParams" : "null",
    "TracInfo" : {
            "ApplicationId" : "fa41f204bfc711e3b9f9c8cbb8c502c4",
            "DeviceId" : "2_1VafJVPu4yfdbMWO1XGROjK6iQZhq4hAVCQL837W",
            "UserId" : "pawan",
            "SessionId" : "a8UHE16mowNwNGyuLXbW",
            "WiFiAP" : "null",
            "WiFiStrength" : 0,
            "BluetoothID" : "null",
            "BluetoothStrength" : 0,
            "NetworkType" : "null",
            "NetworkSubType" : "null",
            "NetworkCarrier" : "Idea",
            "Age" : 43,
            "Gender" : "Female",
            "OSVersion" : "16",
            "Manufacturer" : "samsung",
            "Resolution" : "600*976",
            "Platform" : "Android",
            "Latitude" : 40.42,
            "Longitude" : -74,
            "City" …
Run Code Online (Sandbox Code Playgroud)

java performance mapreduce mongodb aggregation-framework

1
推荐指数
1
解决办法
1703
查看次数

Scala - 减少功能

如何在Scala中使用reduce函数?有这样的内置功能吗?我已经实现了一个程序来查找scala中的字数.

object count {
    def main(args: Array[String]) {
        val fruits = List("apple", "apple", "orange", "apple", "mango", "orange")
        val word = fruits.flatMap(_.split("\n"))
        val Map = word.map(word => (word,1)).groupBy(_._1)
        val reduce = Map.map(word => (word._1,word._2.foldLeft(0)((sum,c) => sum+ c._2)))
        println(reduce)     }} 
Run Code Online (Sandbox Code Playgroud)

如何用reduce功能替换foldleft?

scala mapreduce word-count

1
推荐指数
1
解决办法
3万
查看次数