草庐IT

Java Map Reduce 从不同格式读取 - Avro、文本文件

我有几个Hive表,其中一些是Avro格式,一些是纯文本文件。模式略有不同,但都包含我需要的某些属性。我打算编写一个mapreduce作业来处理数据。问题是我正在努力避免大量单独的工作,并尽可能地简化流程。祈祷我只需要写一份工作。是否有任何示例说明如何在一个映射器中读取不同格式的输入。例如,我在AVRO中有一个我知道的hdfs路径,我还有另一个hdfs路径,其中数据位于纯文本文件中。//Pseudocodemapper(Paths){for(PathinPaths){ifPath.containsAvro(){...readasavro}else{...readastextfile}.

java - hadoop 当前租户正在尝试重新创建文件

我的MapReduce作业按日期处理数据,需要将输出写入特定的文件夹结构。目前的期望是生成以下结构的输出:天=>天/月/文件reducer类:publicstaticclassReducerclassextendsReducer{DateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");privateMultipleOutputsmultipleOutputs;publicvoidreduce(Textrkey,Iterablervalue,Contextcontext)throwsIOException,Interr

hadoop - NULL 在将 Hive 查询结果写入文本文件时显示为 '\N'

我正在尝试使用Hive的“写入目录”功能下载Hive查询的结果。对于某些列,我的查询返回了NULL值,但在生成的文件中我可以看到它被替换为\N。这是Hive的预期行为吗?我必须将生成的文件上传到Bigquery表。有什么方法可以为空值生成NULL而不是\N因为在文件中收到\N之后我必须执行中间处理(将\N替换为NULL或空字符串)。请提出建议。 最佳答案 您可以使用NULLDEFINEDAS定义如何序列化NULL:INSERTOVERWRITEDIRECTORY"/path/to/your/dir"ROWFORMATDELIMITE

hadoop - 附加到现有序列文件

在我的用例中,我需要找到一种将键/值对附加到现有序列文件的方法。怎么做?任何线索都会非常有帮助。我正在使用hadoop2x。此外,我还看到了以下文档。谁能告诉我如何使用它来追加?publicstaticorg.apache.hadoop.io.SequenceFile.WritercreateWriter(FileContextfc,配置session,路径名,类键类,类valClass,org.apache.hadoop.io.SequenceFile.CompressionType压缩类型,CompressionCodec编解码器,org.apache.hadoop.io.Sequ

java - hadoop mapreduce Mapper 从文本文件中读取不正确的值

我正在编写一个mapreduce程序来处理一个文本文件,将一个字符串附加到每一行。我面临的问题是映射器的map方法中的文本值不正确。每当文件中的一行小于前一行时,会自动将几个字符附加到该行以使该行的长度等于上一行的长度。映射方法参数如下*@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{*我正在记录map方法中的值并观察此行为。有什么指点吗?代码片段DriverConfigurationconfiguration=newCon

hadoop - 带有序列文件的 Spark RDD take()

看起来RDD.take()只是在序列文件的支持下重复读取的最后一个元素。例如:valrdd=sc.sequenceFile("records.seq",classOf[LongWritable],classOf[RecordWritable])valrecords:Array[(LongWritable,RecordWritable)]=rdd.take(5)System.out.println(records.map(_._2.toString).mkString("\n"))输出:Record(3.1,2.5)Record(3.1,2.5)Record(3.1,2.5)Record

hadoop - 文本文件可以直接从 Spark 输出到本地文件系统吗?

使用RDD,我可以输出rdd.saveAsTextFile('directory')将文件保存在hdfs://directory中。文本文件可以直接保存到本地文件系统上的目录(即directory)吗? 最佳答案 当然你可以...因为saveAsTextFile('directory')将保存与你的分区程序一样多的文件,你首先需要在复制到本地之前合并文件(除非你希望将每个文件复制到本地).因此先调用FileUtil.copyMerge(sourceFileSystem,newPath(sourceFullPath),destFile

hadoop - sqoop eval 中文件的 SQL 评估参数

是否有任何选项可以从文件运行SQL评估参数,而不是在sqoop评估期间使用--query参数硬编码sql语句?例如:sqoopeval-Dmapreduce.job.queuename=NONP.XXXX--connect"jdbc:oracle:thin:ABC/PSCODE@XXX.XX.XX.com:61901/XXX_ANY"--usernameXXXX--passwordDXX--query"TRUNCATETABLESAMPLE_STG_TABLEDROPSTORAGE";我想在文件statement.sql中存储语句"TRUNCATETABLESAMPLE_STG_TAB

hadoop - 将文本文件的记录与 mapreduce 中同一文件中的所有其他记录连接起来

本文xrds:article在“权衡示例”小节中,描述了一种将每条记录与输入文件的所有其他记录连接起来的方式(第一种)。我想知道在mapreduce中如果不只在一个映射器中传递整个输入文件怎么可能。 最佳答案 MapReduce有三种主要的连接类型(还有一些其他类型)。ReduceSideJoin-对于两个数据集,您输出“外键”作为映射器的输出键。你使用类似MultipleInputs的东西一次加载两个数据集。在reducer中,来自两个数据集的数据通过外键汇集在一起​​,这允许您在那里执行连接逻辑(可能像笛卡尔积)。这是通用的,几

hadoop - 如何在pig 0.8中处理多分隔 rune 件

我有输入文本文件(名称multidelimiter)和以下记录1,Mical,2000;102,Smith,3000;20我写的pig代码如下A=LOAD'/user/input/multidelimiter'ASline;B=FOREACHAGENERATEFLATTEN(REGEX_EXTRACT_ALL(line,'(.*)[,](.*)[,](.*)[;]'))AS(f1,f2,f3,f4);但是由于出现以下错误,这段代码无法正常工作ERRORorg.apache.pig.tools.grunt.Grunt-ERROR1000:Errorduringparsing.Lexica