2 asd315861547 asd315861547 于 2017.01.09 18:30 提问

Hive on Spark下无法处理Parquet表

我在使用Hive on Spark时,在搭建过程中不段踩坑,网上资料也有,但都是千篇一律,点到为止,欲言又止,明明在说却又故意不说清楚的那种,看着让人很蛋疼.
过程是这样的,我在Spark的官网查到,要使用Hive on Spark必须有一个不包含一个Hive的Spark部署包,而官网上的都是带Hive的,那么就只剩一个办法了,自己编译
编译的方法有很多种,官方只要介绍有三种,一种是Spark自带的make-distribution.sh编译工具,第二种是使用Maven编译,第三那种是使用SBT去编译,我一开始选择了Spark自带的make-distribution.sh编译工具,编译过程是令人发疯的,不断报错,不断报错,最后还是让我编译成功了,我的方法是,报错了,重新指令指令编译,不断重复次步骤.
我在用make-distribution.sh编译工具时的指令如下:

./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.6,parquet-provided"
但是编译出来的spark-assembly-*.jar 包只有106M,然后安装部署spark后,却连启动都报错,我就去上网找资料,但是在网上找的资料是,有人通过make-distribution.sh编译工具编译,但是他竟然成功了,完全没报错?????有人也是通过make-distribution.sh编译工具编译的,结果跟我一样,也是报错,他后来才用Maven编译,成功了,没办法,我通过make-distribution.sh编译不成功只能也用Maven编译,后来确实也编译成功了,安装,运行一点问题都没有,我用Maven编译的指令如下:

mvn -Phadoop-2.6 -Pyarn -Dhadoop.version=2.6.5 -Dyarn.version=2.6.5 -Dscala-2.10 -DskipTests clean package
当我以为一切都搞定了的时候,问题又来了,因为我需要用到将Hive中的数据以parquet格式进行存储,到了这时它又报错了,报错信息如下:

Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoSuchMethodError:org.apache.parquet.schema.Types$MessageTypeBuilder.addFields([Lorg/apache/parquet/schema/Type;)Lorg/apache/parquet/schema/Types$BaseGroupBuilder;
然后我就去找资料,百度,Google,Bing都找过了,愣是没找到问题在哪里,我就懵逼了,到底这个问题怎么解决啊?
求前辈赐教

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
spark 读取hive parquet
http://dblab.xmu.edu.cn/blog/1091-2/
spark 2.1 读取parquet外部表返回null
背景通过spark2.1读取hive外部表部分字段返回都为null原因外部表数据使用parquet文件存储,parquet文件列名是大小写敏感的,而hive metastore 的信息都是以小写的形式存储。在2.1版本以前spark-sql会对parquet的列名作小写处理2.1更新中在下面的jira中进行了删除:https://issues.apache.org/jira/browse/SPARK
Hive文件存储格式 :Parquet sparksql ,impala的杀手锏
Hive文件存储格式 1.textfile textfile为默认格式 存储方式:行存储 磁盘开销大 数据解析开销大 压缩的text文件 hive无法进行合并和拆分 2.sequencefile 二进制文件,以的形式序列化到文件中 存储方式:行存储 可分割 压缩 一般选择block压缩 优势是文件和Hadoop api中的mapfile是相互兼容的。 3.rcfile 存储方式:数据按行分块 每
spark 批量读取HDFS(hive分区)parquet文件
情况说明:数据以parquet文件形式保存在HDFS上,数据中的某一列包含了日期(例如:2017-12-12)属性,根据日期对数据分区存储,如下图所示: 项目需求: 在项目中想要读取某一个月的数据,肿么办? 解决方法: spark中读取本地文件的方法如下:sparkSession.read.parquet("hdfs://path")方法一: 要读取多个文件,文件的路径中有一段公共路径
hive 文件存储parquet格式, sparkSql解析部分字段为null
hive 版本2.1.0, hdfs 上同一份数据 (1) 用hive 建表, 部分字段hive 读取有值, sparksql读取值为null CREATE EXTERNAL TABLE business_log.rule_business_log2 (                            id bigint,                             bu
hive 查询结果转为parquet格式 存入hdfs中
hive 查询结果转为parquet格式 存入hdfs中 , 步骤: 1.首先根据我们hive查询结果 ,新建一张表 , 2.然后,对表结构做修改 ,更改表指定存储格式为parquet  , 3.然后删除之前创建的那装表, 然后新建这张指定存储格式的表, 4.之后把结果插入这个表中。 1、 create table table_parquet as  select j30.
读写parquet格式文件的几种方式
摘要 文章地址:http://www.fanlegefan.com/index.php/2017/07/15/hive-parquet/ 博客地址:http://www.fanlegefan.com 本文将介绍常用parquet文件读写的几种方式 1.用spark的hadoopFile api读取hive中的parquet格式文件 2.用sparkSql读写hive中的par
spark、hive、impala、hbase、gbase在结构化数据方面查询原理对比(含parquet/orc)
spark、hive、impala、hbase、gbase在结构化数据方面查询原理对比(含parquet/orc)
修改 Hive Metastore 里记录的 InputFormat、OutputFormat
解决方案写在前面:alter table xxxx set fileformat parquet 因为同事升级Spark时出的bug,误以为需要修改 Hive Metastore 的记录。然后历程比较坎坷,所以记录一下 Spark 1.6.2 创建分区表时,在 Hive Metastore 里记录的是 # Storage Information InputFormat: ...
Parquet与ORC性能测试报告
本文主要使用Hive引擎对比测试了两种业界较为认可的列式存储格式——ORC和Parquet,并使用Text存储格式做对比,设置了星状模型、扁平式宽表,嵌套式宽表等多种场景进行测试,以供感兴趣的同学参考。