Spark原始碼編譯支援Parquet儲存格式

逝水-無痕發表於2019-03-05

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叢集即可。

相關文章