
# 导入并配置Spark样例工程
#### 操作场景
Spark针对多个场景提供样例工程，包含Java样例工程和Scala样例工程等，帮助客户快速学习Spark工程。
针对Java和Scala不同语言的工程，其导入方式相同。使用Python开发的样例工程不需要导入，直接打开Python文件（\*.py）即可。
以下操作步骤以导入Java样例代码为例。操作流程如[图1]所示。
图1导入样例工程流程   
![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692478.png)
#### 操作步骤
1. 参考[获取MRS应用开发样例工程](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_010002.html)，获取样例代码解压目录中"spark-examples"目录下的"sparknormal-examples"文件夹中的Scala、Spark Streaming等多个样例工程。
2. 安装IntelliJ IDEA和JDK工具后，需要在IntelliJ IDEA中配置JDK。 
   1. 打开IntelliJ IDEA，选择"Configure"。
      图2Quick Start   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373460.png "点击放大") 
   
   2. 在"Configure"下拉菜单中单击"Project Defaults"。
      图3Configure   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299212721.png "点击放大") 
   
   3. 在"Project Defaults"菜单中选择"Project Structure"。
      图4Project Defaults   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533222.png "点击放大") 
   
   4. 在打开的"Project Structure"页面中，选择"SDKs"，单击加号添加JDK。
      图5添加JDK   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299212717.png "点击放大") 
   
   5. 在弹出的"Select Home Directory for JDK"窗口，选择对应的JDK目录，然后单击"OK"。
      图6选择JDK目录   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373444.png "点击放大") 
   
   6. 完成JDK选择后，单击"OK"完成配置。
      图7完成JDK配置   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533206.png "点击放大") 
   
   
   
   
3. （可选）如果是Scala开发环境，还需要在IntelliJ IDEA中安装Scala插件。 
   1. 在"Configure"下拉菜单中，单击"Plugins"。
      图8Plugins   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533214.png "点击放大") 
   
   2. 在"Plugins"页面，选择"Install plugin from disk"。
      图9Install plugin from disk   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299212745.png "点击放大") 
   
   3. 在"Choose Plugin File"页面，选择对应版本的Scala插件包，单击"OK"。 ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299052721.png "点击放大")
      
   
   4. 在"Plugins"页面，单击"Apply"安装Scala插件。
   
   5. 在弹出的"Plugins Changed"页面，单击"Restart"，使配置生效。
      图10Plugins Changed   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373476.png) 
   
   
   
   
4. 将Java样例工程导入到IDEA中。 
   1. 打开IntelliJ IDEA。在"Quick Start"页面选择"Import Project"。
      或者，针对已使用过的IDEA工具，您可以从IDEA主界面直接添加。选择"File \> Import project..."导入工程。
      图11Import Project（Quick Start页面）   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299093277.png "点击放大") 
   
   2. 选择需导入的样例工程存放路径及其pom文件，然后单击"OK"。
      图12Select File or Directory to Import   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299052745.png "点击放大") 
   
   3. 确认导入路径和名称，单击"Next"。
      图13Import Project from Maven   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692506.png "点击放大") 
   
   4. 选择需要导入的工程，然后单击"Next"。
   
   5. 确认工程所用JDK，然后单击"Next"。
      图14Select project SDK   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001298932117.png "点击放大") 
   
   6. 确认工程名称和路径，单击"Finish"完成导入。
      图15Confirm the project name and file location   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299052709.png "点击放大") 
   
   7. 导入完成后，IDEA主页显示导入的样例工程。
      图16已导入工程   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299093285.png) 
   
   
   
   
5. （可选）如果导入Scala语言开发的样例程序，还需要为工程设置语言。 
   1. 在IDEA主页，选择"File \> Project Structures..."进入"Project Structure"页面。
   
   2. 选择"Modules"，选中工程名称，然后右键选择"Add \> Scala"。
      图17选择Scala语言   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373436.png "点击放大") 
   
   3. 当IDEA可以识别出Scala SDK时，在设置界面，选择编译的依赖jar包，然后单击"OK"应用设置。
      图18Add Scala Support   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299212733.png "点击放大") 
   
   4. 当系统无法识别出Scala SDK时，需要自行创建。
      1. 单击"Create..."。
         图19Create...   
         ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299052701.png "点击放大") 
      
      2. 在"Select JAR's for the new Scala SDK"页面单击"Browse..."。
         图20Select JAR's for the new Scala SDK   
         ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001299093257.png "点击放大") 
      
      3. 在"Scala SDK files"页面选择scala sdk目录，单击"OK"。
         图21Scala SDK files   
         ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252373448.png "点击放大") 
       
   
   5. 设置成功，单击"OK"保存设置。
      图22设置成功   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001298932105.png "点击放大") 
   
   
   
   
6. 设置IDEA的文本文件编码格式，解决乱码显示问题。 
   1. 在IDEA首页，选择"File \> Settings..."。
      图23选择Settings   
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252692490.png) 
   
   2. 编码配置。
      1. 在"Settings"页面，展开"Editor"，选择"File Encodings"。
      
      2. 分别在右侧的"Global Encoding"和"Project Encoding"的下拉框中，选择"UTF-8"。
      
      3. 单击"Apply"应用配置。
      
      4. 单击"OK"完成编码配置。
      
      
      ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252533250.png "点击放大")
      
   
   
   
   
 
#### 样例代码路径说明
表1样例代码路径说明 
| 样例代码项目                                                   | 样例名称                                       | 样例语言   |
|:---|:---|:---|
| SparkJavaExample                                         | Spark Core程序                               | Java   |
| SparkScalaExample                                        | Spark Core程序                               | Scala  |
| SparkPythonExample                                       | Spark Core程序                               | Python |
| SparkSQLJavaExample                                      | Spark SQL程序                                | Java   |
| SparkSQLScalaExample                                     | Spark SQL程序                                | Scala  |
| SparkSQLPythonExample                                    | Spark SQL程序                                | Python |
| SparkThriftServerJavaExample                             | 通过JDBC访问Spark SQL的程序                       | Java   |
| SparkThriftServerScalaExample                            | 通过JDBC访问Spark SQL的程序                       | Scala  |
| SparkOnHbaseJavaExample-AvroSource                       | Spark on HBase 程序-操作Avro格式数据               | Java   |
| SparkOnHbaseScalaExample-AvroSource                      | Spark on HBase 程序-操作Avro格式数据               | Scala  |
| SparkOnHbasePythonExample-AvroSource                     | Spark on HBase 程序-操作Avro格式数据               | Python |
| SparkOnHbaseJavaExample-HbaseSource                      | Spark on HBase 程序-操作HBase数据源               | Java   |
| SparkOnHbaseScalaExample-HbaseSource                     | Spark on HBase 程序-操作HBase数据源               | Scala  |
| SparkOnHbasePythonExample-HbaseSource                    | Spark on HBase 程序-操作HBase数据源               | Python |
| SparkOnHbaseJavaExample-JavaHBaseBulkPutExample          | Spark on HBase 程序-BulkPut接口使用              | Java   |
| SparkOnHbaseScalaExample-HBaseBulkPutExample             | Spark on HBase 程序-BulkPut接口使用              | Scala  |
| SparkOnHbasePythonExample-HBaseBulkPutExample            | Spark on HBase 程序-BulkPut接口使用              | Python |
| SparkOnHbaseJavaExample-JavaHBaseBulkGetExample          | Spark on HBase 程序-BulkGet接口使用              | Java   |
| SparkOnHbaseScalaExample-HBaseBulkGetExample             | Spark on HBase 程序-BulkGet接口使用              | Scala  |
| SparkOnHbasePythonExample-HBaseBulkGetExample            | Spark on HBase 程序-BulkGet接口使用              | Python |
| SparkOnHbaseJavaExample-JavaHBaseBulkDeleteExample       | Spark on HBase 程序-BulkDelete接口使用           | Java   |
| SparkOnHbaseScalaExample-HBaseBulkDeleteExample          | Spark on HBase 程序-BulkDelete接口使用           | Scala  |
| SparkOnHbasePythonExample-HBaseBulkDeleteExample         | Spark on HBase 程序-BulkDelete接口使用           | Python |
| SparkOnHbaseJavaExample-JavaHBaseBulkLoadExample         | Spark on HBase 程序-BulkLoad接口使用             | Java   |
| SparkOnHbaseScalaExample-HBaseBulkLoadExample            | Spark on HBase 程序-BulkLoad接口使用             | Scala  |
| SparkOnHbasePythonExample-HBaseBulkLoadExample           | Spark on HBase 程序-BulkLoad接口使用             | Python |
| SparkOnHbaseJavaExample-JavaHBaseForEachPartitionExample | Spark on HBase 程序-foreachPartition接口使用     | Java   |
| SparkOnHbaseScalaExample-HBaseForEachPartitionExample    | Spark on HBase 程序-foreachPartition接口使用     | Scala  |
| SparkOnHbasePythonExample-HBaseForEachPartitionExample   | Spark on HBase 程序-foreachPartition接口使用     | Python |
| SparkOnHbaseJavaExample-JavaHBaseDistributedScanExample  | Spark on HBase 程序-分布式Scan HBase表           | Java   |
| SparkOnHbaseScalaExample-HBaseDistributedScanExample     | Spark on HBase 程序-分布式Scan HBase表           | Scala  |
| SparkOnHbasePythonExample-HBaseDistributedScanExample    | Spark on HBase 程序-分布式Scan HBase表           | Python |
| SparkOnHbaseJavaExample-JavaHBaseMapPartitionExample     | Spark on HBase 程序-mapPartitions接口使用        | Java   |
| SparkOnHbaseScalaExample-HBaseMapPartitionExample        | Spark on HBase 程序-mapPartitions接口使用        | Scala  |
| SparkOnHbasePythonExample-HBaseMapPartitionExample       | Spark on HBase 程序-mapPartitions接口使用        | Python |
| SparkOnHbaseJavaExample-JavaHBaseStreamingBulkPutExample | Spark on HBase 程序-SparkStreaming批量写入HBase表 | Java   |
| SparkOnHbaseScalaExample-HBaseStreamingBulkPutExample    | Spark on HBase 程序-SparkStreaming批量写入HBase表 | Scala  |
| SparkOnHbasePythonExample-HBaseStreamingBulkPutExample   | Spark on HBase 程序-SparkStreaming批量写入HBase表 | Python |
| SparkHbasetoHbaseJavaExample                             | 从HBase读取数据再写入HBase                         | Java   |
| SparkHbasetoHbaseScalaExample                            | 从HBase读取数据再写入HBase                         | Scala  |
| SparkHbasetoHbasePythonExample                           | 从HBase读取数据再写入HBase                         | Python |
| SparkHivetoHbaseJavaExample                              | 从Hive读取数据再写入HBase                          | Java   |
| SparkHivetoHbaseScalaExample                             | 从Hive读取数据再写入HBase                          | Scala  |
| SparkHivetoHbasePythonExample                            | 从Hive读取数据再写入HBase                          | Python |
| SparkStreamingKafka010JavaExample                        | Spark Streaming对接Kafka0-10程序               | Java   |
| SparkStreamingKafka010ScalaExample                       | Spark Streaming对接Kafka0-10程序               | Scala  |
| SparkStructuredStreamingJavaExample                      | Structured Streaming程序                     | Java   |
| SparkStructuredStreamingScalaExample                     | Structured Streaming程序                     | Scala  |
| SparkStructuredStreamingPythonExample                    | Structured Streaming程序                     | Python |
| StructuredStreamingADScalaExample                        | Structured Streaming流流Join                 | Scala  |
| StructuredStreamingStateScalaExample                     | Structured Streaming 状态操作                  | Scala  |
| SparkOnHudiJavaExample                                   | 使用Spark执行Hudi基本操作                          | Java   |
| SparkOnHudiPythonExample                                 | 使用Spark执行Hudi基本操作                          | Python |
| SparkOnHudiScalaExample                                  | 使用Spark执行Hudi基本操作                          | Scala  |
   
