
# 第三方jar包跨平台（x86、TaiShan）支持
#### 问题
用户自己写的jar包（例如自定义udf包）区分x86和TaiShan版本，如何让Spark2x支持其正常运行。
#### 回答
第三方jar包（例如自定义udf）区分x86和TaiShan版本时，混合使用方案：
1. 进入到服务端Spark2x SparkResource的安装目录（集群安装时，SparkResource可能会安装在多个节点上，登录任意一个SparkResource节点，进入到SparkResource的安装目录）。
   
   **cd /opt/Bigdata/FusionInsight_Spark_\*/install/FusionInsight-Spark-\*/spark**
   
   
2. 准备jar包，例如xx.jar的x86版本和TaiShan版本。将x86版本和TaiShan版本的xx.jar分别复制到当前目录的x86文件夹和arm文件夹里面。
   
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   步骤1和步骤2必须执行，否则会影响作业提交。
   
   
3. 在当前目录下执行以下命令将jar包打包：
   
   **zip -qDj spark-archive-2x-x86.zip x86/\***
   **zip -qDj spark-archive-2x-arm.zip arm/\***
   ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0263894805.png)
   
   
4. 执行以下命令查看HDFS上的Spark2x依赖的jar包： 
   **hdfs dfs -ls /user/spark2x/jars/8.1.0.1**
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   8.1.0.1是版本号，不同集群的版本号不同，请以实际集群版本为准。
   执行以下命令移动hdfs上旧的jar包文件到其他目录，例如移动到"tmp"目录。
   **hdfs dfs -mv /user/spark2x/jars/8.1.0.1/spark-archive-2x-arm.zip** **/tmp**
   **hdfs dfs -mv /user/spark2x/jars/8.1.0.1/spark-archive-2x-x86.zip** **/tmp**
   
   
5. 上传[3]中打包的spark-archive-2x-arm.zip和spark-archive-2x-x86.zip到hdfs的/user/spark2x/jars/8.1.0.1目录下，上传命令如下：
   
   **hdfs dfs -put spark-archive-2x-arm.zip /user/spark2x/jars/8.1.0.1/**
   **hdfs dfs -put spark-archive-2x-x86.zip /user/spark2x/jars/8.1.0.1/**
   上传完毕后删除本地的spark-archive-2x-arm.zip，spark-archive-2x-x86.zip文件。
   
   
6. 对其他的SparkResource安装节点执行[1]\~[2]。
7. 进入WebUI重启Spark2x的JDBCServer实例。
8. 重启后，需要更新客户端配置。按照客户端所在的机器类型（x86、TaiShan）复制xx.jar的相应版本到客户端的Spark2x安装目录"${install_home}/Spark2x/spark/jars"文件夹中。${install_home}是用户的客户端安装路径，用户需要填写实际的安装目录；如果本地的安装目录为"/opt/hadoopclient"，就复制相应版本xx.jar到"/opt/hadoopclient/Spark2x/spark/jars"文件夹里。
 
