我想运行一个只有地图的工作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的工作.当工作被陈述时,我开始使用一些映射器.每个映射器都会将一些文件写入磁盘,例如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有可能做到这一点吗?
我所知道的事先道歉将是一个简单的问题.我是Python的初学者,但已决定用它来编写mapreduce进行情绪分析.
我从这个链接中获取了一个python文件:http://www.alex-hanna.com/tworkshops/lesson-6-basic-sentiment-analysis/给我指导并试图运行它.我遇到问题的特定代码是:
…
if len(sys.argv) < 2:
print "Usage: avgNReduce.py "
sys.exit(0)
…
Run Code Online (Sandbox Code Playgroud)
错误是:
if len(sys.argv) < 2:
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我认为这是一个需要解决的基本问题,但是尽管谷歌搜索它我真的不知道我是怎么解决这个问题的.我尝试使用冒号而不是半结肠,并确保从复制过程中的&符号是正确的.有任何想法吗?
我遇到的问题是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作业中使用它?
我想知道使用MySQL Cluster和使用Hadoop框架的优点/缺点.什么是更好的解决方案.我想看看你的意见.
我认为使用MySQL Cluster的优点是:
而且我没有看到劣势!Hadoop没有任何缺点吗?
Hadoop与Hive的优势在于:
缺点是:
因此,在我看来,处理大数据时MySQL集群是更好的解决方案.为什么Hadoop是处理大数据的圣杯?你有什么意见?
我在hadoop集群中有10个字段的结构化数据.我需要将这些数据更新为多个hive表,其中包含原始数据中存在的字段子集.
例如:假设数据有字段F1,F2,F3 ...... F10.我有表B1包含字段F1,F2.表B2包含F1,F3.表B3含有F2,F4.
我想知道是否有一种方法可以填充表B1,B2,B3中的数据而无需多次读取A中的数据.
仅供参考:我通过吐出到多个表来对数据进行去规范化,因为这些表将具有数百万条记录,并且我稍后将它们聚合以生成一些统计数据.
目前,我正在考虑以下方法.使用map reduce作业读取数据并使用多种输出格式将不同的键组合写入多个文件,并将这些文件中的数据加载到hive表中.请建议是否有更好的方法来做到这一点.
安装和配置我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) 您好我是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) 我有一系列事件,其结构如下:
{
"_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) 如何在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?
mapreduce ×10
hadoop ×6
java ×3
hive ×2
mongodb ×2
bigdata ×1
hadoop2 ×1
hiveql ×1
performance ×1
postgresql ×1
python ×1
scala ×1
word-count ×1