java scala 混合打包_scala和java混合开发打包
如何進行scala和java混合開發打包?
首先創建maven工程,在pom.xml添加一下依賴
1.8
UTF-8
3.8.1
1.6.4
3.1
2.11.8
2.3.2
org.scala-lang
scala-library
${scala.version}
org.slf4j
slf4j-api
${slf4j-api.version}
org.slf4j
slf4j-log4j12
1.7.25
org.apache.maven.plugins
maven-compiler-plugin
3.6.1
1.7
1.7
net.alchim31.maven
scala-maven-plugin
3.2.2
org.apache.maven.plugins
maven-jar-plugin
3.0.2
true
lib/
spark.example.Main
org.apache.maven.plugins
maven-dependency-plugin
3.0.0
package
copy-dependencies
${project.build.directory}/lib
其中mainClass是最后打包的jar包的主函數,通常是包含main方法的scala類,你也可以不指定。
打包命令用mvn clean scala:compile package
打包之后在jar同目錄下會有./lib子目錄,包含scala-library-2.11.8.jar等依賴包都會在該目錄。
如果依賴包在其他目錄,也可以用命令:、
java -Djava.ext.dirs=c:\libs -jar my-snapshot.jar
來執行。其中-Djava.ext.dirs=c:\libs指定了依賴包路徑為c:\libs,你可以換成自己的目錄。
(1)讀本地文件示例
var file = "C:\\github\\data\\sparkdata.txt"
val fileSrc = scala.io.Source.fromFile(file)
fileSrc.getLines().foreach(println)
(2)Spark示例
/**
* 打印文件內容
*/
val conf = new SparkConf().setAppName("Spark example").setMaster("local");
val sc = new SparkContext(conf);
var file = "file:///C:\\github\\data\\sparkdata.txt"
var fileRdd = sc.textFile(file, 1)
println("#len:", fileRdd.count())
控制日志級別
spark程序跑起來一堆日志,看的心煩,這里介紹簡單的控制日志輸出的方法
hadoop.root.logger=ERROR, console
log4j.rootLogger = ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
# apache
log4j.logger.org.apache.hadoop.util.Shell= off
其中log4j.logger.org.apache.hadoop.util.Shell= off是控制org.apache.hadoop.util.Shell類的日志不打印,windows下hadoop用到winutils.exe文件,找不到就會報錯,但不影響跑程序,干脆關掉它的日志。
總結
以上是生活随笔為你收集整理的java scala 混合打包_scala和java混合开发打包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java环境变量设置 成功_java环境
- 下一篇: php动态生成链接,PHP动态生成jav