如何避免Scala中的Python输出流?

时间:2015-07-28 06:15:57

标签: python scala

我想从scala中启动python中的spark上下文。

我添加了包'pyspark'来执行此操作。这是我试过的代码,这很好用。

代码段:

import sys.process._

var os: java.io.OutputStream = _
val python = Process(Seq("python","-i")).run(BasicIO.standard(os = _))

def pushLine(s: String): Unit = {
  os.write(s"$s\n".getBytes("UTF-8"))
  os.flush()
}

pushLine("from pyspark import SparkContext, SparkConf;from pyspark.sql import SQLContext;conf = SparkConf().setAppName('test').setMaster('local');sc = SparkContext(conf=conf);sqlContext = SQLContext(sc);")

现在,我的要求是避免在scala中显示的输出流。有没有选择可以避免这种情况?

Spark Context Initialization

提前致谢:)

1 个答案:

答案 0 :(得分:1)

以下方法对我有用。

  1. 在某个目录中创建文件log4j.properties ,如 / home / vijay / py-test-log

    log4j.rootCategory = WARN,控制台
    log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.target = System.err的 log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern =%d {yy / MM / dd HH:mm:ss}%p%c {1}:%m%n

    log4j.logger.org.eclipse.jetty = WARN log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle = ERROR log4j.logger.org.apache.spark.repl.SparkIMain $ exprTyper = INFO log4j.logger.org.apache.spark.repl.SparkILoop $ SparkILoopInterpreter = INFO

  2. cd / home / vijay / py-test-log // log4j.props文件应该在这里

  3. 然后来自这个目录的lauch pyspark你有log4j.properties

    <强> $ PWD
    /家庭/维杰/ PY-测试日志
    $ / usr / lib中/火花1.2.0彬hadoop2.3 / bin中/ pyspark

  4. 一切都完成了。 pyspark将从启动位置加载log4j.props文件。