
# 在本地Windows环境中编包并运行Spark程序
#### 操作场景
在程序代码完成开发后，您可以在Windows环境中运行应用。使用Scala或Java语言开发的应用程序在IDEA端的运行步骤是一样的。
![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
- Windows环境中目前只提供通过JDBC访问Spark SQL的程序样例代码的运行，其他样例代码暂不提供。
- 用户需保证Maven已配置华为镜像站中SDK的Maven镜像仓库，具体可参考[配置华为开源镜像仓](https://support.huaweicloud.com/devg3-mrs/mrs_07_010002.html#mrs_07_010002__section13196125861611)。
 
#### 操作步骤
1. 获取样例代码。 
   下载样例工程的Maven工程源码和配置文件，请参见[获取代码样例工程](https://support.huaweicloud.com/devg3-mrs/mrs_07_010002.html#mrs_07_010002__section336726849219)。
   将样例代码导入IDEA中。
   
   
2. 获取配置文件。 
   1. 从集群的客户端中获取文件。在"$SPARK_HOME/conf"中下载hive-site.xml与spark-defaults.conf文件到本地。
   
   2. 在集群的FusionInsight Manager页面下载所使用用户的认证文件到本地。
   
   
   
   
3. 在HDFS中上传数据。 
   1. 在Linux中新建文本文件data，将如下数据内容保存到data文件中。
      ```
      Miranda,32 
      Karlie,23 
      Candice,27
      ```
      
   
   2. 在HDFS客户端，执行如下命令获取安全认证。 **cd** *{客户端安装目录}*
      **kinit** *{*用于认证的业务用户*}*
      
   
   3. 在Linux系统HDFS客户端使用命令**hadoop fs -mkdir /data**（hdfs dfs命令有同样的作用），创建对应目录。
   
   4. 在Linux系统HDFS客户端使用命令**hadoop fs -put** **data** **/data**，上传数据文件。
   
   
   
   
4. 在样例代码中配置相关参数。 
   1. 认证用户配置。 userPrincipal配置为所使用的用户。
      userKeytabPath配置为下载的keytab文件的路径。
      Krb5ConfPath配置为下载的krb5.conf文件的路径。
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001166959915.png)
      域名配置为DEFAULT_REALM，在KerberosUtil类中修改DEFAULT_REALM为集群的域名。
      ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001166879869.png)
      
   
   2. 将securityConfig拼接的字符串中user.principal与user.keytab修改为相应的用户名与路径。注意这里keytab的路径需要使用"/"。 ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001120040196.png)
      
   
   3. 将加载数据的sql语句改为"LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD"。 ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001166959515.png)
      
   
   
   
   
5. 在程序运行时添加运行参数，分别为hive-site.xml与spark-defaults.conf文件的路径。 
   ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_image_0000001120200102.png)
   
   
6. 运行程序。
 
