
# 使用Spark执行Hudi样例程序开发思路
#### 场景说明
本章节介绍如何使用Spark操作Hudi执行插入数据、查询数据、更新数据、增量查询、特定时间点查询、删除数据等操作。
详细代码请参考样例代码。
#### 打包项目
1. 通过IDEA自带的Maven工具，打包项目，生成jar包。具体操作请参考[在Linux环境中编包并运行Spark程序](https://support.huaweicloud.com/devg3-mrs/mrs_07_410123.html)。
   ![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
   运行Python样例代码无需通过Maven打包。
   
2. 将打包生成的jar包上传到Spark客户端所在服务器的任意目录（例如" /opt/example/" ）下。
 
#### 运行任务
1. 登录Spark客户端节点，执行如下命令： **source** *客户端安装目录* **/bigdata_env**
   **source** *客户端安装目录* **/Hudi/component_env**
   
2. 编译构建样例代码后可以使用spark-submit提交命令，执行命令后会依次执行写入、更新、查询、删除等操作：
   - 运行Java样例程序： **spark-submit --class com.huawei.bigdata.hudi.examples.HoodieWriteClientExample /opt/example/hudi-java-examples-1.0.jar hdfs://hacluster/tmp/example/hoodie_java** **hoodie_java**
     其中："/opt/example/hudi-java-examples-1.0.jar"为jar包路径，"hdfs://hacluster/tmp/example/hoodie_java"为Hudi表的存储路径，" hoodie_java"为Hudi表的表名。
     
   
   - 运行Scala样例程序： **spark-submit --class com.huawei.bigdata.hudi.examples.HoodieDataSourceExample /opt/example/hudi-scala-examples-1.0.jar hdfs://hacluster/tmp/example/hoodie_scala hoodie_scala**
     其中："/opt/example/hudi-scala-examples-1.0.jar"为jar包路径，"hdfs://hacluster/tmp/example/hoodie_scala"为Hudi表的存储路径，" hoodie_Scala"为Hudi表的表名。
     
   
   - 运行Python样例程序： **spark-submit /opt/example/HudiPythonExample.py hdfs://hacluster/tmp/huditest/example/python hudi_trips_cow**
     其中："hdfs://hacluster/tmp/huditest/example/python"为Hudi表的存储路径，" hudi_trips_cow"为Hudi表的表名。
     
    
 
