草庐IT

InputFormat

全部标签

java - 自定义 InputFormat.getSplits() 从未在 Hive 中调用

我正在编写自定义InputFormat(具体来说,org.apache.hadoop.mapred.FileInputFormat的子类)、OutputFormat和SerDe,用于通过ApacheHive读取的二进制文件。并非二进制文件中的所有记录都具有相同的大小。我发现Hive的默认InputFormatCombineHiveInputFormat没有将getSplits委托(delegate)给我的自定义InputFormat的实现,这会导致所有输入文件按常规128MB边界拆分。这样做的问题是这个拆分可能在记录的中间,所以除了第一个之外的所有拆分很可能看起来有损坏的数据。我已经找

java - 如何在 hadoop 应用程序中覆盖 InputFormat 和 OutputFormat

我有一个应用程序需要读取一个文件,该文件是ArrayList的序列化结果。(ArrayList,此列表中有50000条记录,大小:20MB)我不知道如何将数据读入hadoop平台。我只是觉得我需要覆盖InputFormat和OutpurFormat。我是hadoop平台的初学者。你能给我一些建议吗?谢谢,郑。 最佳答案 首先,您需要扩展FileInputFormat,值得注意的是实现抽象FileInputFormat.createRecordReader方法。您可以查看类似LineRecordReader的源代码(这是TextInp

macos - 由 : java. lang.ClassNotFoundException : org. apache.hadoop.mapreduce.InputFormat 引起

我在MACOSX10.9.4中执行sqoop导入并收到如下错误:14/10/2411:51:41INFOsqoop.Sqoop:RunningSqoopversion:1.4.514/10/2411:51:41INFOtool.BaseSqoopTool:UsingHive-specificdelimitersforoutput.Youcanoverride14/10/2411:51:41INFOtool.BaseSqoopTool:delimiterswith--fields-terminated-by,etc.14/10/2411:51:41INFOmanager.MySQLMan

python - Spark 使用自定义 InputFormat 读取 WARC 文件

我需要通过Spark处理一个.warc文件,但我似乎无法找到一种直接的方法。我宁愿使用Python而不是通过wholeTextFiles()将整个文件读入RDD(因为整个文件将在单个节点处理(?))因此它似乎是唯一的/最好的方法是通过在Python中与.hadoopFile()一起使用的自定义HadoopInputFormat。但是,我找不到执行此操作的简单方法。将.warc文件拆分为条目就像拆分\n\n\n一样简单;那么我怎样才能做到这一点,而不用像各种在线“教程”中所示那样编写大量额外的(无用的)代码呢?可以全部用Python完成吗?即,如何在不使用wholeTextFiles读取

java - 为 cassandra 创建 ColumnFamilyInputFormat 的自定义 InputFormat

我正在做一个项目,使用cassandra1.2,hadoop1.2我已经创建了我的普通cassandra映射器和缩减器,但我想创建我自己的输入格式类,它将从cassandra读取记录,我将通过使用拆分和索引拆分该值来获得所需的列值,所以,我计划创建自定义格式类。但我很困惑,不知道,我该怎么做?要扩展和实现哪些类,以及我将如何获取行键、列名、列值等我的Mapper类如下:publicclassMyMapperextendsMapper,Text,Text>{privateTextword=newText();MyJDBCdb=newMyJDBC();publicvoidmap(ByteB

hadoop - 使用 Hive 自定义输入格式

更新:好的,事实证明下面的方法不起作用是因为我使用的是较新版本的InputFormatAPI(importorg.apache.hadoop.mapred是旧的,importorg.apache.hadoop.mapreduce是新的)。我遇到的问题是将现有代码移植到新代码。有没有人有使用旧API编写多行InputFormat的经验?尝试使用Hadoop/Hive处理Omniture的数据日志文件。文件格式是制表符分隔的,虽然在大多数情况下非常简单,但它们确实允许您在一个字段中有多个换行符和制表符,这些换行符和制表符由反斜杠转义(\\n和\\t).因此,我选择创建自己的InputFor

database - Spark : run InputFormat as singleton

我正在尝试将键值数据库集成到Spark中并有一些问题。我是Spark初学者,阅读了很多书并运行了一些示例,但什么也没有复杂。场景:我正在使用小型hdfs集群将传入消息存储在数据库中。集群有5个节点,数据被拆分为5个分区。每个分区存储在单独的数据库文件中。因此每个节点都可以处理它自己的数据分区。问题:数据库软件的接口(interface)基于JNI,数据库本身是在C中实现。由于技术原因,数据库软件可以维护一次只有一个事件连接。只能有一个JVM进程已连接到数据库。由于这个限制,读取和写入数据库必须去通过相同的JVM进程。(背景信息:数据库嵌入到流程中。它是基于文件的,并且一次只能有一个进程

Java/Android - 将 GMT 时间字符串转换为本地时间

好的,所以我有一个字符串,比如说“2012年5月21日星期二14:32:00GMT”我想将这个字符串转换为本地时间,格式为May21,20122:32pm。我尝试了SimpleDateFormat("MMdd,yyyyhh:mma").parse(),但它引发了异常。那我该怎么办呢?异常是“未报告的异常java.text.ParseException;必须被捕获或声明为抛出。”在行Datedate=inputFormat.parse(inputText);我在TextMate上运行的代码:publicclasstest{publicstaticvoidmain(Stringarg[])

java - Spark 与 Hadoop 集成 InputFormat 混淆

我目前正在尝试将自定义InputSplit和RecordReader与ApacheSpark的SparkContexthadoopRDD()函数结合使用。我的问题如下:InpuSplit.getLenght()和/或RecordReader.getProgress()返回的值是否会影响map()的执行SparkRuntime中的函数?我问是因为我在ApacheHadoop上使用了这两个自定义类,它们按预期工作。但是,在Spark中,我看到在运行时生成了新的InputSplit对象,这是我不希望我的代码执行的操作。更准确地说:在执行开始时,我在我的日志文件中看到生成了正确数量的Input

hadoop - 接口(interface) InputFormat 与类 InputFormat

我是Hadoop的新手,我正在尝试学习它并遇到了InputFormat的两个版本。org/apache/hadoop/mapred/InputFormatorg/apache/hadoop/mapreduce/InputFormat两个api的解释似乎是一样的,但一个是接口(interface),另一个是类。有人可以帮我解释为什么Hadoop中有2个具有相同解释的API吗? 最佳答案 MapReduce在hadoop-0.23中进行了彻底的改造,称为MapReduce2.0(MRv2)或YARN。org/apache/hadoop/