
# 对接开源Spark前准备
在配置开源Spark组件对接LakeFormation前，需要提前准备以下信息：
1. 准备可用的开源Spark环境、开源Hive环境。并安装Git环境。 
   目前仅支持对接Spark 3.1.1以及Spark 3.3.1两个版本。对应使用Hive内核版本为2.3。
   
   
2. 准备LakeFormation实例，详细操作请参考[创建LakeFormation实例](https://support.huaweicloud.com/usermanual-lakeformation/lakeformation_03_00007.html)。
3. 创建LakeFormation接入客户端，并与Spark在相同的虚拟私有云、子网下，详细操作请参考[管理接入客户端](https://support.huaweicloud.com/usermanual-lakeformation/lakeformation_03_00024.html)。
4. 准备开发环境，详细操作请参考[准备开发程序环境](https://support.huaweicloud.com/devg-lakeformation/lakeformation_06_0010.html)中"准备开发环境"部分，其中"安装和配置IntelliJ IDEA"为可选。
5. 准备LakeFormation客户端。
   
   - **方式一：下载客户端发行版**
     获取地址为：<https://gitee.com/HuaweiCloudDeveloper/huaweicloud-lake-formation-lakecat-sdk-java/releases>
     根据Spark、Hive版本下载对应客户端（如Spark 3.1.1，对应Hive版本为2.3.7，则下载lakeformation-lakecat-client-hive2.3-v1.0.0.rar）
     校验压缩包：下载后在Windows环境下执行**certutil -hashfile** *\<压缩包\>* **sha256**，检查回显信息与对应sha256文件内容是否一致。
     
   
   - **方式二：本地编译客户端**
     1. 获取客户端代码。 获取地址为：<https://gitee.com/HuaweiCloudDeveloper/huaweicloud-lake-formation-lakecat-sdk-java>。
        
     
     2. 在Git中执行以下命令将分支切换为"master_dev"： **git checkout master_dev**
        
     
     3. 配置maven源，详细操作请参考[获取SDK并配置maven](https://support.huaweicloud.com/devg-apisign/api-sign-sdk-java.html#section1)。
     
     4. 获取以下jar包及对应的pom文件，并将文件放入maven本地仓库。
        例如本地仓库地址为"D:\\maven\\repository"，则放入"D:\\maven\\repository\\com\\huaweicloud\\hadoop-huaweicloud\\3.1.1-hw-53.8"目录下。
        - jar包：<https://github.com/huaweicloud/obsa-hdfs/blob/master/release/hadoop-huaweicloud-3.1.1-hw-53.8.jar>
        
        - pom文件：<https://github.com/huaweicloud/obsa-hdfs/blob/master/hadoop-huaweicloud/pom.xml>，并改名为hadoop-huaweicloud-3.1.1-hw-53.8.pom。
          
     
     5. 编译打包客户端代码。
     
     6. 根据Spark版本，进入客户端工程目录，执行以下打包命令：
        **mvn clean install -DskipTests=true** **-P"** *${SPARK_PROFILE}* **" -P"** *${HIVE_PROFILE}* **"**
        - SPARK_PROFILE：填写spark-3.1或者spark-3.3。
        
        - HIVE_PROFILE：填写hive-2.3。
          
     
     7. 打包完成后可以在"lakeformation-lakecat-client"的target目录下获取"lakeformation-lakecat-client-1.0.0.jar"。 ![](https://support.huaweicloud.com/bestpractice-lakeformation/zh-cn_image_0000001714176886.png)
        
      
   
   
   
   
6. 准备并补充替换Hive内核相关的jar包。如仅使用**SparkCatalogPlugin方式** 对接，不使用**MetastoreClient方式** 对接，本步骤可省略。
   
   - **方式一：下载预构建Hive相关jar包**
     获取地址为：<https://gitee.com/HuaweiCloudDeveloper/huaweicloud-lake-formation-lakecat-sdk-java/releases>
     根据Spark、Hive版本下载对应客户端（如Spark 3.1.1，对应Hive版本为2.3.7，则下载hive-exec-2.3.7-core.jar、hive-common-2.3.7.jar）
     
   
   - **方式二：本地编译Hive相关jar包**
     如果对接的环境为Spark 3.1.1，则需使用Hive 2.3.7版本。如果对接的环境为Spark 3.3.1，则需使用Hive 2.3.9版本。
     Windows系统下需要在WSL开发环境下进行maven相关操作。
     1. 根据Hive版本下载Hive源码。 例如Hive内核版本号为2.3.9，则下载链接为<https://github.com/apache/hive/tree/rel/release-2.3.9>。
        
     
     2. 将LakeFormation的客户端代码中的patch应用到Hive源码。
        1. 根据需要切换Hive源码分支，例如Hive内核版本号为2.3.9，则执行如下命令： **git checkout rel/release-** *2.3.9*
           
        
        2. 执行以下命令，将patch应用到切换分支后的Hive源码工程。 **mvn patch:apply -DpatchFile=${** *your patch file location* **}**
           其中，"your patch file location"为hive-2_3_for_lakeformation.patch的存储路径。patch文件可在客户端工程中获取，如下图所示：
           ![](https://support.huaweicloud.com/bestpractice-lakeformation/zh-cn_image_0000001761817069.png "点击放大")
           
        
        3. 执行以下命令重新编译Hive内核源码。 **mvn clean install -DskipTests=true**
           
         
      
   
   
   
   
7. 补充Spark环境所需jar包。 
   获取以下jar包，并补充或替换到Spark的jars目录下。
   表1获取Spark环境所需jar包 
   | 序号 | jar包名称                                                                                                                                                                                                                                    | 获取途径                                                                                                                                |
   |:---|:---|:---|
   | 1  | spring-web-5.3.24.jar                                                                                                                                                                                                                     | <https://mirrors.huaweicloud.com/repository/maven/org/springframework/spring-web/5.3.24/spring-web-5.3.24.jar>                      |
   | 2  | spring-core-5.3.24.jar                                                                                                                                                                                                                    | <https://mirrors.huaweicloud.com/repository/maven/org/springframework/spring-core/5.3.24/spring-core-5.3.24.jar>                    |
   | 3  | spring-context-5.3.24.jar                                                                                                                                                                                                                 | <https://mirrors.huaweicloud.com/repository/maven/org/springframework/spring-context/5.3.24/spring-context-5.3.24.jar>              |
   | 4  | spring-beans-5.3.24.jar                                                                                                                                                                                                                   | <https://mirrors.huaweicloud.com/repository/maven/org/springframework/spring-beans/5.3.24/spring-beans-5.3.24.jar>                  |
   | 5  | caffeine-2.9.3.jar                                                                                                                                                                                                                        | <https://mirrors.huaweicloud.com/repository/maven/com/github/ben-manes/caffeine/caffeine/2.9.3/caffeine-2.9.3.jar>                  |
   | 6  | mapstruct-1.5.3.Final.jar                                                                                                                                                                                                                 | <https://mirrors.huaweicloud.com/repository/maven/org/mapstruct/mapstruct/1.5.3.Final/mapstruct-1.5.3.Final.jar>                    |
   | 7  | log4j-api-2.19.0.jar（Spark 3.3无需补充）                                                                                                                                                                                                       | <https://mirrors.huaweicloud.com/repository/maven/org/apache/logging/log4j/log4j-api/2.19.0/log4j-api-2.19.0.jar>                   |
   | 8  | java-sdk-core-3.2.4.jar （如果仅使用[自定义认证信息获取类](https://support.huaweicloud.com/bestpractice-lakeformation/lakeformation_08_0004.html#lakeformation_08_0004__section1919012574549)使用Token认证，则无需补充该jar包。） | <https://mirrors.huaweicloud.com/repository/maven/huaweicloudsdk/com/huawei/apigateway/java-sdk-core/3.2.4/java-sdk-core-3.2.4.jar> |
   | 9  | bcprov-jdk15to18-1.70.jar                                                                                                                                                                                                                 | <https://mirrors.huaweicloud.com/repository/maven/org/bouncycastle/bcprov-jdk15to18/1.70/bcprov-jdk15to18-1.70.jar>                 |
   | 10 | jca-1.0.4.jar                                                                                                                                                                                                                             | <https://mirrors.huaweicloud.com/repository/maven/org/openeuler/jca/1.0.4/jca-1.0.4.jar>                                            |
   | 11 | hadoop-huaweicloud-3.1.1-hw-53.8.jar                                                                                                                                                                                                      | <https://github.com/huaweicloud/obsa-hdfs/blob/master/release/hadoop-huaweicloud-3.1.1-hw-53.8.jar>                                 |
   | 12 | lakeformation-lakecat-client-1.0.0.jar                                                                                                                                                                                                    | [步骤 5]中获取。                                                                                  |
   | 13 | hive-exec-${version}-core.jar                                                                                                                                                                                                             | [步骤 6]中获取。                                                                                  |
   | 14 | hive-common-${version}.jar                                                                                                                                                                                                                | [步骤 6]中获取。                                                                                  |
      
   
   
 
