SparkConf
具有方法寄存器KryoClass
:
def registerKryoClasses(classes: Array[Class[_]]): SparkConf = { .. }
但是,它在SparkSession.conf()
属性提供的RuntimeConfiguration
facade中不可用/公开
@transient lazy val conf: RuntimeConfig = new RuntimeConfig(sessionState.conf)
下面是有关RuntimeConfiguration的更多信息:
/**
* Runtime configuration interface for Spark. To access this, use `SparkSession.conf`.
*
* Options set here are automatically propagated to the Hadoop configuration during I/O.
*
* @since 2.0.0
*/
@InterfaceStability.Stable
class RuntimeConfig private[sql](sqlConf: SQLConf = new SQLConf) {
在创建自己的SparkSession时,有一个明确的解决方法:我们可以调用提供给
val mysparkConf = SparkConf.set(someKey,someVal)
mysparkConf.registerKryoClasses(Array(classOf[Array[InternalRow]]))
SparkSession.builder.conf(mySparkConf)
然后是一个不太清楚的...
conf.registerKryoClasses(Array(classOf[scala.reflect.ClassTag$$anon$1]))
但在运行Spark shell时,已经创建了sparkSession(sparkContext)。那么,如何使非运行时设置生效呢?
这里特别需要:
sparkConf.registerKryoClasses(Array(classOf[org.apache.spark.sql.Row]))
当尝试在可用于spark会话对象的SqlConf上设置时,会出现以下异常:
scala> spark.conf.registerKryoClasses(Array(classOf[Row]))
错误:值registerKryoClasses不是组织的成员。阿帕奇。火花sql。RuntimeConfig spark。conf.registerKryoClasses(数组(classOf[行]))
那么,如何在spark shell中注册kryo序列化程序呢?
以下不是对[我自己的问题的确切回答——但它似乎是当前具体困境的解决办法:
implicit val generalRowEncoder: Encoder[Row] = org.apache.spark.sql.Encoders.kryo[Row]
在作用域中包含这个隐式似乎是直接在SparkConf上向kryo注册类。
我想注册一个UDAF类(用Scala或Python编写)并在SparkSQL中使用它。 例如: 模拟代码 然后我可以直接在spark sql中使用udaf,如下所示: Spark仅提供了Spark.udf。registerJavaFunction方法注册UDF类。 有人知道如何注册UDAF吗?
我想,问题出在深度嵌套的内部类上。我在登记上做错什么了吗?
在将Spark 1.6应用程序移植到Spark 2.0.2的过程中,日志中出现了以下投诉: 此操作失败,原因是:java。lang.ClassNotFoundException:org/apache/spark/streaming/receiver/receiver[]/类 此操作失败,原因是:java。lang.ClassNotFoundException:org/apache/spark/st
我已经在一个15节点的Hadoop集群上安装了。所有节点都运行和最新版本的Hadoop。Hadoop集群本身是功能性的,例如,YARN可以成功地运行各种MapReduce作业。 我可以使用以下命令在节点上本地运行Spark Shell,而不会出现任何问题:。 你知道为什么我不能用客户端模式在纱线上运行Spark Shell吗?
我正在创建一个火花上下文通过使用- 然后我创建一个RDD- 现在,当我对这些数据执行一些操作时,比如(f/take rdd 3)等,我得到了一个错误- 17/11/28 14:35:00错误提示:组织遇到异常。阿帕奇。火花SparkException:未能在org向Kryo注册类。阿帕奇。火花序列化程序。KryoSerializer。newKryo(KryoSerializer.scala:129
我正在尝试配置序列化程序实例,以便在storm拓扑中使用。 非常感谢