在星火就业斯卡拉成员字段知名度 [英] Scala member field visibility in Spark jobs
本文介绍了在星火就业斯卡拉成员字段知名度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有定义,像这样一类的Scala:
I have a Scala class that I define like so:
import org.apache.spark.{SparkConf, SparkContext}
object TestObject extends App{
val FAMILY = "data".toUpperCase
override def main(args: Array[String]) {
val sc = new SparkContext(new SparkConf())
sc.parallelize(1 to 10)
.map(getData)
.saveAsTextFile("my_output")
}
def getData(i: Int) = {
( i, FAMILY, "data".toUpperCase )
}
}
我把它提交给纱线集群像这样:
I submit it to a YARN cluster like so:
HADOOP_CONF_DIR=/etc/hadoop/conf spark-submit \
--conf spark.hadoop.validateOutputSpecs=false \
--conf spark.yarn.jar=hdfs:/apps/local/spark-assembly-1.2.1-hadoop2.4.0.jar \
--deploy-mode=cluster \
--master=yarn \
--class=TestObject \
target/scala-2.11/myjar-assembly-1.1.jar
没想到,输出看起来像下面,说明的getData code>方法不能看到
家庭
:
(1,null,DATA)
(2,null,DATA)
(3,null,DATA)
(4,null,DATA)
(5,null,DATA)
(6,null,DATA)
(7,null,DATA)
(8,null,DATA)
(9,null,DATA)
(10,null,DATA)
我需要做什么了解,有关领域和范围,并知名度和火花提交和对象和单身和诸如此类的东西,了解为什么发生这种情况?而我应该怎么做,而不是,如果我基本上要定义为常量的的getData code>方法可见的变量?
推荐答案
我可能会丢失一些东西,但我不认为你应该定义一个主
方法。当你扩展应用
的你继承一个主
,你不应该覆盖它,因为这是实际调用你的<$的code C $ C>应用。
I might be missing something, but I don't think you should be defining a main
method. When you extend App
, you inherit a main
, and you should not override it since that is what actually invokes the code in your App
.
例如,在你的答案简单的类应该写成
For example, the simple class in your answer should be written
object TestObject extends App {
val FAMILY = "data"
println(FAMILY, "data")
}
这篇关于在星火就业斯卡拉成员字段知名度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文