在本地Windows环境中调测Spark应用
在程序代码完成开发后,您可以在Windows环境中运行应用。使用Scala或Java语言开发的应用程序在IDEA端的运行步骤是一样的。
- Windows环境中目前只提供通过JDBC访问Spark SQL的程序样例代码的运行,其他样例代码暂不提供。
- 用户需保证Maven已配置华为镜像站中SDK的Maven镜像仓库,具体可参考配置华为开源镜像仓。
编包并运行程序
- 获取样例代码。
下载样例工程的Maven工程源码和配置文件,请参见获取MRS应用开发样例工程。
将样例代码导入IDEA中。
- 获取配置文件。
- 从集群的客户端中获取文件。在“$SPARK_HOME/conf”中下载hive-site.xml与spark-defaults.conf文件到本地。
- 在集群的FusionInsight Manager页面下载所使用用户的认证文件到本地。
- 在HDFS中上传数据。
- 在样例代码中配置相关参数。
- 认证用户配置。
userKeytabPath配置为下载的keytab文件的路径。
Krb5ConfPath配置为下载的krb5.conf文件的路径。
域名配置为DEFAULT_REALM,在KerberosUtil类中修改DEFAULT_REALM为集群的域名。
- 将securityConfig拼接的字符串中user.principal与user.keytab修改为相应的用户名与路径。注意这里keytab的路径需要使用“/”。
- 将加载数据的sql语句改为“LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD”。
- 认证用户配置。
- 在程序运行时添加运行参数,分别为hive-site.xml与spark-defaults.conf文件的路径。
- 运行程序。
查看调试结果
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/mavenlocal/org/apache/logging/log4j/log4j-slf4j-impl/2.6.2/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/mavenlocal/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. ---- Begin executing sql: CREATE TABLE IF NOT EXISTS CHILD (NAME STRING, AGE INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ---- Result ---- Done executing sql: CREATE TABLE IF NOT EXISTS CHILD (NAME STRING, AGE INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ---- ---- Begin executing sql: LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD ---- Result ---- Done executing sql: LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD ---- ---- Begin executing sql: SELECT * FROM child ---- NAME AGE Miranda 32 Karlie 23 Candice 27 ---- Done executing sql: SELECT * FROM child ---- ---- Begin executing sql: DROP TABLE child ---- Result ---- Done executing sql: DROP TABLE child ---- Process finished with exit code 0