Tag: hadoop

如何在Scalding中输出数据

我正在尝试将管道输出到不同的目录中,以便每个目录的输出将基于某些ID进行分区。 所以在一个普通的地图中减少代码我会使用MultipleOutputs类,我会在reducer中做这样的事情。 protected void reduce(final SomeKey key, final Iterable values, final Context context) { … for (SomeValue value: values) { String bucketId = computeBucketIdFrom(…); multipleOutputs.write(key, value, folderName + “/” + bucketId); … 所以我想在烫伤时可以这样做 … val somePipe = Csv(in, separator = “\t”, fields = someSchema, skipHeader = true) .read for (i (id.hashCode % numberOfBuckets) == i} […]

Map在eclipse中减少2.4.1 hadoop的客户端jar

当我在shell中的hadoop文件夹中运行我的hadoop mapreduce word count jar时,它运行正常并且输出正确生成, 因为我在hadoop 2.4.1情况下使用yarn ,当我从eclipse运行MapReduce Sample program ,MAP进程完成并且在reduce进程中失败。 很明显,问题在于jar配置。 请找到jar子,我已添加…… 这是我得到的错误 信息:减少任务执行者完成。 2014年11月21日下午8:50:35 org.apache.hadoop.mapred.LocalJobRunner $作业运行警告:job_local1638918104_0001 java.lang.Exception:java.lang.NoSuchMethodError:org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles(Ljava / util / Map;)V org.apache.hadoop.mapred.LocalJobRunner $ Job.runTasks(LocalJobRunner.java:462)at org.apache.hadoop.mapred.LocalJobRunner $ Job.run(LocalJobRunner.java:529) by:java.lang.NoSuchMethodError:org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles(Ljava / util / Map;)V at org.apache.hadoop.mapred.LocalJobRunner $ Job $ ReduceTaskRunnable.run(LocalJobRunner.java:309) )java.util.concurrent.Executors $ runnableAdapter.call(Executors.java:471)at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334)at java.util.concurrent.FutureTask.run( FutureTask.java:166)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run (Thread.java:722 ) 线程“Thread-12”中的exceptionjava.lang.NoClassDefFoundError:org.apache.hadoop.mapred.LocalJobRunner中的org […]

Hadoop框架中使用的完整属性列表

我正在研究Hadoop框架。 我想问一下可以在框架中使用的属性。例如 io.sort.mb io.sort.record.percent 等等 我可以参考这个框架的整个属性列表吗? 非常希望有人可以帮助我。 此外,我想问一下io.sort.mb和mapreduce.task.io.sort.mb是否有任何区别? 或者他们是一样的?

如何设置一个reducer来发送和一个mapper来接收?

我正在使用mapreduce在hadoop上开发一些代码,它使用两个映射器和两个reducer。 我被告知使用SequenceFileInputFormat和SequenceFileOutputFormat来使第一个reducer的输出和第二个mapper的输入一起工作。 问题是我正在记录一个错误,经过googleing很多我不知道为什么。 错误: java.lang.Exception:java.io.IOException:键入map中的键不匹配: expected org.apache.hadoop.io。 IntWritable , 收到 org.apache.hadoop.io。 文本 键入map中的键不匹配: 期望 org.apache.hadoop.io。 IntWritable , 收到 org.apache.hadoop.io。 文本 代码: package casoTaxis; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat; public class Eje1{ public static class […]

在Loop之后,全局变量的值不会改变

我正在开发一个hadoop项目。 我希望在某一天找到客户,然后写下当天最大消费的客户。 在我的reducer类中,由于某种原因,全局变量max在for循环后不会改变它的值。 编辑我想找到某一天最大消费的客户。 我已经设法在我想要的日期找到客户,但我在Reducer类中遇到了问题。 这是代码: 编辑#2我已经知道值(消耗)是自然数。 所以在我的输出文件中,我想成为某一天的客户,最大消费。 编辑#3我的输入文件由许多数据组成。 它有三列; 客户的ID,时间戳(yyyy-mm-DD HH:mm:ss)和消耗量 司机class import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class alicanteDriver { public static void main(String[] args) throws Exception { long t_start = System.currentTimeMillis(); long t_end; Configuration conf = new Configuration(); Job job = Job.getInstance(conf, “Alicante”); […]

HBase – java中的java.lang.NoClassDefFoundError

我只是想尝试使用Java与Hbase进行交互 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.*; import org.apache.hadoop.hbase.HBaseConfiguration; public class TestHBase { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf); try { HTable table = new HTable(conf, “test-table”); Put put = new Put(Bytes.toBytes(“test-key”)); put.add(Bytes.toBytes(“cf”), Bytes.toBytes(“q”), Bytes.toBytes(“value”)); table.put(put); } finally { admin.close(); } } […]

如何通过API访问Hadoop计数器值?

在Hadoop中我们可以在map / reduce任务中增加计数器,它看起来像这样: … context.getCounter(MyCountersEnum.SomeCounter).increment(1); … 你可以在日志中找到它们的价值。 工作完成后如何从代码中访问它们? 什么是Hadoop API来读取计数器值?

在Spark中提取hive表分区 – java

Spark中有没有办法只提取分区列名? 我使用的解决方法是使用HiveContext运行“ show extended table like table_name ”

看起来好像你正在使用JRE运行sqoop – 但JAVA_HOME设置为JDK

我试图在Ubuntu上设置sqoop(sqoop-1.4.3.bin__hadoop-1.0.0)。 我可以毫无问题地运行基本的sqoop帮助等。 当我运行以下操作时出现错误: sqoop import –connect jdbc:mysql://localhost/test –table sales -m 1 13/04/19 10:35:24 INFO orm.CompilationManager: HADOOP_MAPRED_HOME is /opt/hadoop/hadoop-1.0.4 13/04/19 10:35:24 ERROR orm.CompilationManager: It seems as though you are running sqoop with a JRE. 13/04/19 10:35:24 ERROR orm.CompilationManager: Sqoop requires a JDK that can compile Java code. 13/04/19 10:35:24 ERROR orm.CompilationManager: Please install a JDK and […]

使用Java API将Parquet格式写入HDFS,而不使用Avro和MR

通过直接创建 Pojo的Parquet Schema ,而不使用avro和MR ,将Parquet格式写入HDFS (使用Java API)的简单方法是什么? 我发现的样本已经过时,使用弃用的方法也使用了Avro,spark或MR中的一种。