sparkContext, javaSparkContext, SQLContext和SparkSession什么SparkSession 。 有没有使用Sparksession转换或创建Context的方法? 我可以使用一个条目SparkSession完全替换所有Context吗? 是否在SQLContext中添加了SparkSession , SparkContext , JavaSparkContext等中的所有函数? 像parallelize这样的函数在SparkContext和JavaSparkContext有不同的用法。 如何在SparkSession使用这样的function? 如何使用SparkSession创建以下SparkSession ? RDD JavaRDD JavaPairRDD 数据集 有没有方法将JavaPairRDD转换为Dataset或Dataset到JavaPairRDD ?
我有一个RDD,我试图序列化,然后通过反序列化重建。 我试图看看Apache Spark中是否可行。 static JavaSparkContext sc = new JavaSparkContext(conf); static SerializerInstance si = SparkEnv.get().closureSerializer().newInstance(); static ClassTag<JavaRDD> tag = scala.reflect.ClassTag$.MODULE$.apply(JavaRDD.class); .. .. JavaRDD rdd = sc.textFile(logFile, 4); System.out.println(“Element 1 ” + rdd.first()); ByteBuffer bb= si.serialize(rdd, tag); JavaRDD rdd2 = si.deserialize(bb, Thread.currentThread().getContextClassLoader(),tag); System.out.println(rdd2.partitions().size()); System.out.println(“Element 0 ” + rdd2.first()); 当我对新创建的RDD执行操作时,我在最后一行得到exception。 我序列化的方式类似于Spark内部的方式。 Exception in thread “main” org.apache.spark.SparkException: RDD transformations […]
我试图在Spark中实现K-最近邻算法。 我想知道是否可以使用嵌套的RDD。 这将使我的生活更轻松。 请考虑以下代码段。 public static void main (String[] args){ //blah blah code JavaRDD temp1 = testData.map( new Function(){ public Double call(final Vector z) throws Exception{ JavaRDD temp2 = trainData.map( new Function() { public Double call(Vector vector) throws Exception { return (double) vector.length(); } } ); return (double)z.length(); } } ); } 目前我收到这个嵌套设置的错误(我可以在这里发布完整的日志)。 它是否允许在拳头位置? 谢谢
我有一个使用Spark生成的RDD。 现在,如果我将此RDD写入csv文件,我将获得一些方法,如“saveAsTextFile()”,它将csv文件输出到HDFS。 我想将文件写入我的本地文件系统,以便我的SSIS进程可以从系统中选择文件并将它们加载到数据库中。 我目前无法使用sqoop。 除了编写shell脚本之外,它是否可以在Java中实现。 需要任何清晰度,请告知。
我知道方法rdd.first(),它给了我RDD中的第一个元素。 还有方法rdd.take(num)这给了我第一个“num”元素。 但是没有可能通过索引获得元素吗? 谢谢。
我正在尝试使用Apache Spark和Java执行矩阵乘法。 我有两个主要问题: 如何创建可以代表Apache Spark中的矩阵的RDD? 如何将两个这样的RDD相乘?
我相信,我有一个相对常见的火花流用例: 我有一个对象流,我想根据一些参考数据进行过滤 最初,我认为使用广播变量实现这是一件非常简单的事情: public void startSparkEngine { Broadcast refdataBroadcast = sparkContext.broadcast(getRefData()); final JavaDStream filteredStream = objectStream.filter(obj -> { final ReferenceData refData = refdataBroadcast.getValue(); return obj.getField().equals(refData.getField()); } filteredStream.foreachRDD(rdd -> { rdd.foreach(obj -> { // Final processing of filtered objects }); return null; }); } 但是,尽管很少, 我的参考数据会定期更改 我的印象是我可以在驱动程序上修改和重新广播我的变量,它会传播给每个worker,但Broadcast对象不是Serializable ,需要是final 。 我有什么替代品? 我能想到的三个解决方案是: 将引用数据查找移动到forEachPartition或forEachRdd ,以使其完全驻留在worker上。 但是,参考数据存在于REST API中,因此我还需要以某种方式存储计时器/计数器以停止对流中的每个元素访问远程数据库。 每次refdata更改时,使用新的广播变量重新启动Spark上下文。 […]