草庐IT

parquet-mr

全部标签

java - Parquet 格式的 Mapreduce 错误

我正在尝试运行mapreduce作业。我的文件是parquet格式。我收到以下错误:Exceptioninthread"main"java.lang.NoClassDefFoundError:org/apache/thrift/TExceptionatparquet.format.converter.ParquetMetadateConverter.readParquetMetadata(ParquetMetadateConverter.java:268)atparquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.ja

scala - Spark 在 hdfs 上写入 Parquet

我安装了3个节点hadoop和spark。我想从rdbms中获取数据到数据帧中,并将这些数据写入HDFS上的Parquet。“dfs.replication”值为1。当我使用以下命令尝试此操作时,我看到所有HDFSblock都位于我执行spark-shell的节点上。scala>xfact.write.parquet("hdfs://sparknode01.localdomain:9000/xfact")这是预期的行为还是应该将所有block分布在整个集群中?谢谢 最佳答案 由于您正在将数据写入HDFS,因此这不依赖于spark,而

hadoop - Hadoop MR1 和 MR2 共存

是否可以在同一个集群中同时运行HadoopMR1和MR2(至少在理论上)?如果是,我该怎么做? 最佳答案 理论上,你可以这样做:在一台机器上运行DataNodeTaskTracker和NodeManager在其他机器上运行NameNodeSecondaryNameNode和ResourceManager具有不同端口的所有进程但是,不建议这样做,参见clouderablog:"MakesureyouarenottryingtorunMRv1andYARNonthesamesetofnodesatthesametime.Thisisno

hadoop - Parquet API 没有Keys 的概念?

好的,所以在获得关于无法通过spark将key写入parquet文件的异常之后,我查看了API并仅找到了这个。publicclassParquetOutputFormatextendsFileOutputFormat{....(我的假设可能是错误的=D,某处可能还有另一个API。)好吧,这有一些扭曲的意义,毕竟你可以在数据从容器文件中具体化时投影/限制数据。不过,只是为了安全起见。Parquet文件没有序列文件“键”值的概念,对吗?我觉得这有点奇怪,Hadoop基础架构是围绕一个序列文件可能有一个key这一事实构建的。而且我假设这个key被自由地用于将数据分区为局部性的block(而不

java - CDH5.2 : MR, 无法初始化任何输出收集器

ClouderaCDH5.2快速启动虚拟机ClouderaManager显示所有节点状态=绿色我已经在Eclipse上创建了一个MR作业,包括构建路径中的所有相关的clouderajar:avro-1.7.6-cdh5.2.0.jar,avro-mapred-1.7.6-cdh5.2.0-hadoop2.jar,hadoop-common-2.5.0-cdh5.2.0.jar,hadoop-mapreduce-client-core-2.5.0-cdh5.2.0.jar我已经运行了以下作业hadoopjarjproject1.jaravro00.AvroUserPrefCount-li

hadoop - 如何使用sqlContext加载多个parquet文件?

我正在尝试在spark中加载parquet文件的目录,但似乎无法使其正常工作......这似乎有效:valdf=sqlContext.load("hdfs://nameservice1/data/rtl/events/stream/loaddate=20151102")但这行不通:valdf=sqlContext.load("hdfs://nameservice1/data/rtl/events/stream/loaddate=201511*")它给了我这个错误:java.io.FileNotFoundException:Filedoesnotexist:hdfs://nameserv

hadoop - 在 Hive 脚本中设置 mapred.child.java.opts 会导致 MR 作业立即获得 'killed'

由于OutOfMemory和GCoverheadlimitexceeded错误,我有一些作业失败了。为了对抗前者,我尝试在配置单元脚本的开头设置SETmapred.child.java.opts="-Xmx3G";**。基本上,每当我将此选项添加到脚本时,安排的MR作业(对于脚本中几个查询中的第一个)都会立即“终止”。关于如何纠正这个问题有什么想法吗?是否有任何其他参数需要与最大堆空间一起修改(例如io.sort.mb)?任何帮助将非常感谢。FWIW,我正在使用hive-0.7.0和hadoop-0.20.2。我们集群中最大堆大小的默认设置是1200M。TIA。**-尝试过的其他一些替

java - 将自定义 Java 对象写入 Parquet

我有一些自定义java对象(内部由其他自定义对象组成)。我希望将这些以Parquet格式写入HDFS。即使经过大量搜索,大多数建议似乎都是围绕使用avro格式和parquet的内部AvroConverter来存储对象。看到这个here和here,看来我将不得不编写自定义WriterSupport来完成此操作。有更好的方法吗?直接编写自定义对象或使用Avro之类的东西作为中间模式定义哪个更好? 最佳答案 您可以使用Avro反射来获取架构。其代码类似于ReflectData.AllowNull.get().getSchema(Custo

Java 读取 Parquet 文件到 JSON 输出

正在读取Parquet文件,但得到的是缩进格式,而不是所需的JSON输出格式。有任何想法吗?我在想我可能需要更改GroupRecordConverter但找不到太多文档。如果可以指出这一点,也会有所帮助。非常感谢您的帮助。longnum=numLines;try{ParquetMetadatareadFooter=ParquetFileReader.readFooter(conf,path,ParquetMetadataConverter.NO_FILTER);MessageTypeschema=readFooter.getFileMetaData().getSchema();Parq

java - 是否可以在不依赖 Hadoop 和 HDFS 的情况下使用 Java 读写 Parquet?

我一直在寻找这个问题的解决方案。在我看来,如果不依赖HDFS和Hadoop,就无法在Java程序中嵌入读写Parquet格式。这个对吗?我想在Hadoop集群之外的客户端机器上读写。我开始对ApacheDrill感到兴奋,但它似乎必须作为一个单独的进程运行。我需要的是使用Parquet格式读写文件的进程内能力。 最佳答案 您可以使用javaParquetClientAPI在hadoop集群外编写parquet格式。这里是java中的示例代码,将parquet格式写入本地磁盘。importorg.apache.avro.Schema;