Tag: hadoop

从单个Hive UDF创建多个列

我正在使用Amazon EMR和Hive 0.11。 我正在尝试创建一个Hive UDF,它将从一个UDF调用返回多个列。 例如,我想调用类似下面的UDF并返回几个(命名)列。 SELECT get_data(columnname) FROM table; 我无法找到完成此操作的文档,但是如果使用Generic UDF,则可以听到。 有谁知道需要从evaluate()方法返回什么才能工作?

如何在使用hadoop时使用logger api编写java日志文件

我写了一个地图减少我想要调试的代码。 为了做到这一点,我无法使用标准输出,因为除非发生错误,否则Hadoop平台不会将其打印到屏幕上。 相反,我试图使用记录器,以创建日志文件。 我使用处理程序将它拆分为两个文件,遗憾的是,“严重”的日志文件是空的,一般日志文件只记录主线程中发生的事情,而不是映射减少函数。 问题如下: 有没有hadoop和日志文件的问题,还是我的记录器配置有问题? 如果是这样,如何纠正它。 日志配置代码:我使用一个记录器来处理整个应用程序(这次是root logger) public static Logger configureLogging() { try { logger=Logger.getLogger(“”); //FileSystem hdfs=FileSystem.get(URI.create(Misc.S3FS),getConfiguration()); logger.setLevel(Level.ALL); //StreamHandler handler=new StreamHandler(hdfs.create(new Path(Misc.LOGS_PATH+”mylog.log”)),new SimpleFormatter()); FileHandler handler=new FileHandler(Misc.LOGS_PATH+”mylog.xml”,true); FileHandler severeHandler=new FileHandler(Misc.LOGS_PATH+”mylogSevere.xml”,true); severeHandler.setLevel(Level.INFO); logger.addHandler(handler); logger.addHandler(severeHandler); } catch (Exception e) { e.printStackTrace(); } return logger; }

关于hadoop 2.2.0 maven依赖性的火花0.9.1

我在pom.xml中设置了Apache Spark maven依赖,如下所示 org.apache.spark spark-core_2.10 0.9.1 但我发现这个依赖使用“ hadoop-client-1.0.4.jar ”和“ hadoop-core-1.0.4.jar ”,当我运行我的程序时,我得到了错误“ org.apache.hadoop.ipc。 RemoteException:服务器IPC版本9无法与客户端版本4 “ 通信 ,这表明我需要将hadoop版本从1.0.4切换到2.2.0。 更新 : 以下解决方案是解决此问题的正确方法吗? org.apache.spark spark-core_2.10 0.9.1 org.apache.hadoop hadoop-core org.apache.hadoop hadoop-client org.apache.hadoop hadoop-client 2.2.0 非常感谢您的帮助。

将1GB数据加载到hbase中需要1小时

我想将1GB(1000万条记录)CSV文件加载到Hbase中。 我为它写了Map-Reduce程序。 我的代码工作正常但需要1小时才能完成。 最后减速机耗时超过半小时。 有人可以帮帮我吗? 我的守则如下: Driver.Java 包com.cloudera.examples.hbase.bulkimport; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.mapreduce.HFileOutputFormat; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; / ** * HBase批量导入示例 *数据准备MapReduce作业驱动* * args [0]:HDFS输入路径* args [1]:HDFS输出路径* args [2]:HBase表名* * / public class Driver {public static void main(String [] args)throws Exception {Configuration […]

为什么检查hadoop中是否存在文件会导致NullPointerException?

我正在尝试创建或打开一个文件来存储HDFS中的一些输出,但是当我在下面的代码片段的倒数第二行调用exists方法时,我得到一个NullPointerException: DistributedFileSystem dfs = new DistributedFileSystem(); Path path = new Path(“/user/hadoop-user/bar.txt”); if (!dfs.exists(path)) dfs.createNewFile(path); FSDataOutputStream dos = dfs.create(path); 这是堆栈跟踪: java.lang.NullPointerException at org.apache.hadoop.dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:390) at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:667) at ClickViewSessions$ClickViewSessionsMapper.map(ClickViewSessions.java:80) at ClickViewSessions$ClickViewSessionsMapper.map(ClickViewSessions.java:65) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:47) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:227) at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2209) 问题是什么?

无法validationserde:org.openx.data.jsonserde.jsonserde

我写了这个查询来在hive上创建一个表。 我的数据最初是json格式,所以我已下载并构建serde并添加了运行所需的所有jar。 但我收到以下错误: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Cannot validate serde: org.openx.data.jsonserde.JsonSerDe 查询: create table tip(type string, text string, business_id string, user_id string, date date, likes int) ROW FORMAT SERDE ‘org.openx.data.jsonserde.JsonSerDe’ WITH SERDEPROPERTIES(“date.mapping”=”date”) STORED AS TEXTFILE;

Hadoop多个输入

我正在使用hadoop map reduce,我想计算两个文件。 我的第一个Map / Reduce迭代给了我一个带有ID号码的文件,如下所示: A 30 D 20 我的目标是使用文件中的ID与另一个文件关联,并使用另一个三重奏输出:ID,Number,Name,如下所示: A ABC 30 D EFGH 20 但我不确定使用Map Reduce是否是最好的方法。 例如,使用文件读取器读取第二个输入文件并通过ID获取名称会更好吗? 或者我可以使用Map Reduce吗? 如果是这样,我正试图找出方法。 我尝试了一个MultipleInput解决方案: MultipleInputs.addInputPath(job2, new Path(args[1]+”-tmp”), TextInputFormat.class, FlightsByCarrierMapper2.class); MultipleInputs.addInputPath(job2, new Path(“inputplanes”), TextInputFormat.class, FlightsModeMapper.class); 但我想不出任何解决方案来结合两个并得到我想要的输出。 我现在的方式就是给我这样的列表: A ABC A 30 B ABCD C ABCDEF D EFGH D 20 在我最后减少之后我得到了这个: N125DL 767-332 N125DL 7 , N126AT […]

象鸟mvn包错误

我在我的系统中安装了hadoop 2.2。 我想用象鸟jar。 在运行“mvn package”时出现以下错误。 错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project elephant-bird-core: Compilation failure: Compilation failure: [ERROR] /usr/lib/hadoop/elephant_bird/core/target/generated-sources/thrift/com/twitter/elephantbird/thrift/test/TestListInList.java: [9,39] error: package org.apache.commons.lang3.builder does not exist [ERROR] /usr/lib/hadoop/elephant_bird/core/target/generated-sources/thrift/com/twitter/elephantbird/thrift/test/TestListInList.java: [10,31] error: package org.apache.thrift.scheme does not exist [ERROR] /usr/lib/hadoop/elephant_bird/core/target/generated-sources/thrift/com/twitter/elephantbird/thrift/test/TestListInList.java: [11,31] error: package org.apache.thrift.scheme does not exist [ERROR] /usr/lib/hadoop/elephant_bird/core/target/generated-sources/thrift/com/twitter/elephantbird/thrift/test/TestListInList.java: [12,31] error: package org.apache.thrift.scheme does not […]

关闭tomcat服务器时无法加载org.apache.hadoop.util.ShutdownHookManager

我有一个在tomcat上运行的简单Web应用程序。 此Web应用程序将文件读​​写到HDFS。 我面临的问题是每次使用./bin/shutdown.sh停止服务器时。 我得到无法加载hadoop shutdownHookManagerexception。 我确定hadoop-common(包含ShutDownManager)在tomcat类路径中。 谁能帮我吗? 我得到的例外: Oct 14, 2013 5:57:54 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks SEVERE: The web application [] created a ThreadLocal with key of type [com.ebay.kernel.calwrapper.CalTransactionHelper$1] (value [com.ebay.kernel.calwrapper.CalTransactionHelper$1@3d5a1c5f]) and a value of type [com.ebay.kernel.calwrapper.CalTransactionHelper.Stack] (value [[]]) but failed to remove it when the web application was stopped. Threads are going to be renewed […]

错误的值类:类org.apache.hadoop.io.Text不是类org.apache.hadoop.io.IntWritable

我使用了一个mapper,一个reducer和一个combiner类,但是我得到的错误如下: java.io.IOException: wrong value class: class org.apache.hadoop.io.Text is not class org.apache.hadoop.io.IntWritable at org.apache.hadoop.mapred.IFile$Writer.append(IFile.java:199) at org.apache.hadoop.mapred.Task$CombineOutputCollector.collect(Task.java:1307) at org.apache.hadoop.mapred.Task$NewCombinerRunner$OutputConverter.write(Task.java:1623) at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89) at org.apache.hadoop.mapreduce.lib.reduce.WrappedReducer$Context.write(WrappedReducer.java:105) at BookPublished1$Combine.reduce(BookPublished1.java:47) at BookPublished1$Combine.reduce(BookPublished1.java:1) at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:171) at org.apache.hadoop.mapred.Task$NewCombinerRunner.combine(Task.java:1644) at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1618) at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1467) at org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:699) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:769) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157) 我的整个程序如下所示: import java.io.IOException; import org.apache.hadoop.io.FloatWritable; […]