我有一个巨大的可parsing元数据的DF作为一个数据框中的单个string列,让我们称之为DFA,ColmnA。 我想通过函数ClassXYZ = Func1(ColmnA)将此列ColmnA分成多个列。 这个函数返回一个具有多个variables的ClassXYZ类,每个variables现在都必须映射到新的Column,比如ColmnA1,ColmnA2等。 我如何通过调用这个Func1一次来从1个Dataframe到另外一个列进行这样的转换,而不必重复它来创build所有的列。 如果我每次都要调用这个巨大的函数来添加一个新的列,那么这很容易解决,但这是我想避免的。 请告知工作或伪代码。 谢谢 桑杰
我正在使用Spark 2.1.1来处理具有〜2000特性的数据集,并试图创build一个基本的MLpipe道,由一些变形金刚和一个分类器组成。 我们假设为了简单起见,我正在使用的pipe道包含一个VectorAssembler,StringIndexer和一个Classifier,这将是一个相当常见的用例。 // Pipeline elements val assmbleFeatures: VectorAssembler = new VectorAssembler() .setInputCols(featureColumns) .setOutputCol("featuresRaw") val labelIndexer: StringIndexer = new StringIndexer() .setInputCol("TARGET") .setOutputCol("indexedLabel") // Train a RandomForest model. val rf: RandomForestClassifier = new RandomForestClassifier() .setLabelCol("indexedLabel") .setFeaturesCol("featuresRaw") .setMaxBins(30) // add the params, unique to this classifier val paramGrid = new ParamGridBuilder() .addGrid(rf.numTrees, Array(5)) .addGrid(rf.maxDepth, Array(5)) .build() // […]
我安装了Spark,运行了sbt程序集,可以打开bin / pyspark没有问题。 但是,我遇到了加载到ipython的pyspark模块的问题。 我收到以下错误: In [1]: import pyspark ————————————————————————— ImportError Traceback (most recent call last) <ipython-input-1-c15ae3402d12> in <module>() —-> 1 import pyspark /usr/local/spark/python/pyspark/__init__.py in <module>() 61 62 from pyspark.conf import SparkConf —> 63 from pyspark.context import SparkContext 64 from pyspark.sql import SQLContext 65 from pyspark.rdd import RDD /usr/local/spark/python/pyspark/context.py in <module>() 28 from pyspark.conf import […]
我正在使用spark 1.4.0-rc2,所以我可以使用python 3与火花。 如果我将export PYSPARK_PYTHON=python3添加到我的.bashrc文件中,我可以用python 3交互地运行spark。但是,如果我想以本地模式运行独立程序,则会出现以下错误: Exception: Python in worker has different version 3.4 than that in driver 2.7, PySpark cannot run with different minor versions 我如何指定驱动程序的Python版本? 设置export PYSPARK_DRIVER_PYTHON=python3不起作用。
看看新的spark数据框api,目前还不清楚是否可以修改dataframe列。 我将如何去改变数据框的行x列y中的值? 在pandas这将是df.ix[x,y] = new_value 编辑:合并下面说的,你不能修改现有的数据框,因为它是不可变的,但你可以返回一个新的数据框与所需的修改。 如果您只是想根据条件replace列中的值,如np.where : from pyspark.sql import functions as F update_func = (F.when(F.col('update_col') == replace_val, new_value) .otherwise(F.col('update_col'))) df = df.withColumn('new_column_name', update_func) 如果要对列执行一些操作并创build一个添加到数据框的新列: import pyspark.sql.functions as F import pyspark.sql.types as T def my_func(col): do stuff to column here return transformed_value # if we assume that my_func returns a string my_udf = F.UserDefinedFunction(my_func, […]
所以,在代码重用,devise模式和最佳实践经常被考虑在面向对象的世界里花费了很多年的时候,我发现自己在代码组织和代码重用方面有点挣扎。 如果我试图以可重用的方式编写代码,它几乎总会带来性能成本,我最终将其重写为任何最适合我的特殊用例。 这个常量“写出对这个特定用例最合适的”也会影响代码的组织,因为当“它全部真的属于一起”时,将代码分解成不同的对象或模块是困难的,因此我最终得到的只有很less的“神”复杂的转化链。 事实上,我经常想,如果我在面向对象的世界工作时,大部分我现在正在写的Spark代码,我会畏缩并将其视为“意大利面代码”。 我上网试图find某种相当于面向对象的世界的最佳实践,但没有太多的运气。 我可以find一些函数式编程的“最佳实践”,但是Spark只是增加了一个额外的层,因为性能在这里是一个很重要的因素。 所以我对你的问题是,有没有你的火花大师发现了一些编写Spark代码的最佳实践,你可以推荐? 编辑 正如在评论中写的,我实际上并没有期待任何人就如何解决这个问题发表一个答案,而是我希望在这个社区中有人遇到了一些Martin Fowlertypes,他们在某处写过som文章或博客文章关于如何解决Spark世界中代码组织的问题。 @DanielDarabosbuild议我可以举一个代码组织和性能相互冲突的例子。 虽然我发现在日常工作中我经常遇到这个问题,但是我发现把它简化成一个很好的小例子有点困难;但是我会尽力的。 在面向对象的世界中,我是单一职责原则的忠实粉丝,所以我会确保我的方法只对一件事负责。 它使得它们可重用,易于testing。 所以,如果我不得不说,计算列表中的一些数字的总和(匹配一些标准),我必须计算相同数字的平均数,我肯定会创build两个方法 – 一个计算总和和一个计算平均值。 喜欢这个: def main(implicit args: Array[String]): Unit = { val list = List(("DK", 1.2), ("DK", 1.4), ("SE", 1.5)) println("Summed weights for DK = " + summedWeights(list, "DK") println("Averaged weights for DK = " + averagedWeights(list, "DK") } def summedWeights(list: […]
请告诉我Apache Spark和AKKA之间的区别,我知道这两个框架意味着编程分布和并行计算,但我没有看到它们之间的链接或差异。 此外,我想获得适合他们每个人的用例。
我试图转换Spark-scala中所有的DataFrame的Headers / ColumnNames。 截至目前我拿出下面的代码,只取代一个单一的名字。 请帮忙。 for( i <- 0 to origCols.length – 1){df.withColumnRenamed(df.columns(i),df.columns(i).toLowerCase);}
我想对HDFS中的数据做一些“接近实时”的数据分析(类似于OLAP)。 我的研究表明,与Apache Hive相比,上述三个框架报告了显着的性能提升。 有没有人有任何一个实际的经验? 不仅关系到performance,而且关乎稳定?
Spark研究论文已经在经典的Hadoop MapReduce上规定了一种新的分布式编程模型,声称在许多情况下,特别是在机器学习上,这种简化和巨大的性能提升。 然而,在本文中,用有向无环图揭示Resilient Distributed Datasets internal mechanics的材料似乎是缺乏的。 通过调查源代码是否应该更好地学习?