Tag: apache spark

如何透视DataFrame?

我开始使用Spark Dataframes,我需要能够转换数据以创build具有多行的1列中的多个列。 在Scalding中有内置的function,我相信Python中的Pandas,但是我找不到新的Spark Dataframe。 我认为我可以编写自定义函数,但是我不知道如何开始,尤其是因为我是一个Spark新手。 我有人知道如何做到这一点内置的function或如何写在斯卡拉的东西的build议,不胜感激。

任务不是可序列化的:java.io.NotSerializableException仅在类不是对象时调用函数外的函数

在闭包之外调用函数时出现奇怪的行为: 当函数在一个对象中一切正在工作 当函数在一个类中获得: Task not serializable: java.io.NotSerializableException: testing 问题是我需要我的代码,而不是一个对象。 任何想法为什么发生这种情况? 是一个Scala对象序列化(默认?)? 这是一个工作代码示例: object working extends App { val list = List(1,2,3) val rddList = Spark.ctx.parallelize(list) //calling function outside closure val after = rddList.map(someFunc(_)) def someFunc(a:Int) = a+1 after.collect().map(println(_)) } 这是非工作的例子: object NOTworking extends App { new testing().doIT } //adding extends Serializable wont help class testing […]

如何在数据集中存储自定义对象?

据介绍Spark数据集 : 当我们期待Spark 2.0时,我们计划对数据集进行一些令人振奋的改进,特别是:…自定义编码器 – 当我们目前自动生成各种类型的编码器时,我们希望打开自定义对象的API。 并尝试将自定义类型存储在Dataset集中导致出现以下错误: 无法找到存储在数据集中的类型的编码器。 通过导入sqlContext.implicits._支持原始类型(Int,String等)和产品类型(case类)。支持序列化其他类型将在未来版本中添加 要么: Java.lang.UnsupportedOperationException:没有找到编码器…. 是否有任何现有的解决方法? 请注意,此问题仅作为社区Wiki答案的入口点存在。 随时更新/改善问题和答案。

通过按键Spark – 一个Spark作业写入多个输出

如何在单个Job中使用Spark写入多个依赖于键的输出。 我当然可以使用.filter来处理所有可能的密钥,但这是一个非常糟糕的黑客攻击,它会触发许多作业, 并且需要对数据集进行多次迭代,即使缓存也是如此 相关: 通过键Scalding Hadoop(一个MapReduce作业)写入多个输出 例如 sc.makeRDD(Seq((1, "a"), (1, "b"), (2, "c"))) .writeAsMultiple(prefix, compressionCodecOption) 将确保cat prefix/1是 a b 和cat prefix/2将是 c 我知道这个问题的答案将涉及在Hadoop中使用MultipleOutputFormat。 更新:请不要对结果输出进行任何限制,例如提供文件数量固定的解决方案,或者必须事先知道密钥数量的地方,或者压缩类型有限的地方。 更新:在烫伤这现在是超级简单感谢TemplatedTsv我想要一个答案就是这样!