Spark源码编译
Spark源码编译方式部署Spark时,为了支持Parquet功能,需要在源码编译时指定支持Parquet功能(即在编译命令中带上”parquet-provided“参数),具体的编译命令如下:
./dev/make-distribution.sh --name "hadoop310-without-hive" --tgz "-Pyarn,-Phadoop-3.1,-Dhadoop.version=3.1.0,parquet-provided,orc-provided"
具体Spark的部署可以参考:https://blog.csdn.net/wangkai_123456/article/details/87348161#3Spark_25
Hadoop-Parquet相关jar包下载
查找与系统(此处以hive为例)的parquet版本号
环境信息:
hadoop版本:3.1.0
spark版本:2.3.3
hive版本:3.1.1
为了保证Parquet的jar包与版本的兼容性,可以在hive源码根目录下的pom.xml文件中查看与hive相兼容的parquet版本号,查找parquet.version,以hive-3.1.1为例,查找的结果如下:
<parquet.version>1.10.0</parquet.version>
<pig.version>0.16.0</pig.version>
<plexus.version>1.5.6</plexus.version>
<protobuf.version>2.5.0</protobuf.version>
<stax.version>1.0.1</stax.version>
<slf4j.version>1.7.10</slf4j.version>
<ST4.version>4.0.4</ST4.version>
<storage-api.version>2.7.0</storage-api.version>
<tez.version>0.9.1</tez.version>
<super-csv.version>2.2.0</super-csv.version>
<spark.version>2.3.0</spark.version>
<scala.binary.version>2.11</scala.binary.version>
<scala.version>2.11.8</scala.version>
查找到的parquet版本为1.10.0版本
下载hadoop-parquet相关jar包
下载地址:https://mvnrepository.com/artifact/org.apache.parquet/parquet-hadoop
使用maven下载Apache Parquet Hadoop 1.10.0版本的jar包,下载下来的jar包如下:
commons-codec-1.10.jar
jackson-mapper-asl-1.9.13.jar
parquet-encoding-1.10.0.jar
parquet-jackson-1.10.0.jar
commons-pool-1.6.jar
parquet-column-1.10.0.jar
parquet-format-2.4.0.jar
slf4j-api-1.7.2.jar
jackson-core-asl-1.9.13.jar
parquet-common-1.10.0.jar
parquet-hadoop-1.10.0.jar
snappy-java-1.1.2.6.jar
Spark配置
将下载的Parquet Hadoop相关的所有jar包加入到spark的classpath里面:将下载的Parquet Hadoop相关的所有jar包保存到/usr/local/parquet-hadoop-jars目录下,并在${SPARK_HOME}/conf/spark-defaults.conf文件中新增如下配置:
spark.driver.extraClassPath /usr/local/parquet-hadoop-jars/*
spark.executor.extraClassPath /usr/local/parquet-hadoop-jars/*
spark集群所有节点都做同样的配置,最后重启spark集群即可。