Questions tagged «pyspark»

Spark Python API(PySpark)将apache-spark编程模型公开给Python。

13
如何在pyspark中更改数据框列名称?
我来自熊猫背景,习惯于将CSV文件中的数据读取到数据帧中,然后使用简单的命令将列名更改为有用的东西: df.columns = new_column_name_list 但是,这在使用sqlContext创建的pyspark数据帧中无效。我能想到的唯一解决方案是: df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt") oldSchema = df.schema for i,k in enumerate(oldSchema.fields): k.name = new_column_name_list[i] df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema) 这基本上是两次定义变量,然后首先推断模式,然后重命名列名,然后使用更新后的模式再次加载数据框。 有没有像我们在大熊猫中那样做的更好,更有效的方法? 我的Spark版本是1.5.0

2
Scala与Python的Spark性能
与Scala相比,我更喜欢Python。但是,由于Spark是用Scala原生编写的,出于明显的原因,我期望我的代码在Scala中的运行速度比Python版本快。 基于这个假设,我想学习和编写一些非常通用的预处理代码的Scala版本,用于大约1 GB的数据。数据选自Kaggle的SpringLeaf竞赛。只是为了概述数据(它包含1936个维度和145232行)。数据由各种类型组成,例如int,float,string,boolean。我正在使用8个内核中的6个进行Spark处理;minPartitions=6因此,我使用了每个内核都要处理的东西。 Scala代码 val input = sc.textFile("train.csv", minPartitions=6) val input2 = input.mapPartitionsWithIndex { (idx, iter) => if (idx == 0) iter.drop(1) else iter } val delim1 = "\001" def separateCols(line: String): Array[String] = { val line2 = line.replaceAll("true", "1") val line3 = line2.replaceAll("false", "0") val vals: Array[String] = line3.split(",") …

15
如何在Spark中关闭INFO日志记录?
我使用AWS EC2指南安装了Spark,并且可以使用bin/pyspark脚本正常启动该程序以获取Spark 提示,并且还可以成功执行快速入门Quide。 但是,我无法终生解决如何INFO在每个命令后停止所有冗长的日志记录。 我在下面的代码(注释掉,设置为OFF)中的几乎所有可能的情况下都尝试了log4j.properties该conf文件夹,该文件夹位于我从中以及在每个节点上启动应用程序的文件夹中,没有任何反应。INFO执行每个语句后,我仍然可以打印日志记录语句。 我对应该如何工作感到非常困惑。 #Set everything to be logged to the console log4j.rootCategory=INFO, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n # Settings to quiet third party logs that are too verbose log4j.logger.org.eclipse.jetty=WARN log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO 这是我使用时的完整类路径SPARK_PRINT_LAUNCH_COMMAND: Spark命令:/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java -cp:/root/spark-1.0.1-bin-hadoop2/conf:/root/spark-1.0.1 -bin-hadoop2 / conf:/root/spark-1.0.1-bin-hadoop2/lib/spark-assembly-1.0.1-hadoop2.2.0.jar:/root/spark-1.0.1-bin-hadoop2/lib /datanucleus-api-jdo-3.2.1.jar:/root/spark-1.0.1-bin-hadoop2/lib/datanucleus-core-3.2.2.jar:/root/spark-1.0.1-bin-hadoop2 /lib/datanucleus-rdbms-3.2.1.jar -XX:MaxPermSize = 128m -Djava.library.path …

2
如何在Spark DataFrame中添加常量列?
我想在中添加DataFrame具有任意值的列(每行相同)。使用withColumn以下内容时出现错误: dt.withColumn('new_column', 10).head(5) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-50-a6d0257ca2be> in <module>() 1 dt = (messages 2 .select(messages.fromuserid, messages.messagetype, floor(messages.datetime/(1000*60*5)).alias("dt"))) ----> 3 dt.withColumn('new_column', 10).head(5) /Users/evanzamir/spark-1.4.1/python/pyspark/sql/dataframe.pyc in withColumn(self, colName, col) 1166 [Row(age=2, name=u'Alice', age2=4), Row(age=5, name=u'Bob', age2=7)] 1167 """ -> 1168 return self.select('*', col.alias(colName)) 1169 1170 @ignore_unicode_prefix AttributeError: 'int' object …

9
如何将新列添加到Spark DataFrame(使用PySpark)?
我有一个Spark DataFrame(使用PySpark 1.5.1),想添加一个新列。 我已经尝试了以下方法,但没有成功: type(randomed_hours) # => list # Create in Python and transform to RDD new_col = pd.DataFrame(randomed_hours, columns=['new_col']) spark_new_col = sqlContext.createDataFrame(new_col) my_df_spark.withColumn("hours", spark_new_col["new_col"]) 使用此命令也出错: my_df_spark.withColumn("hours", sc.parallelize(randomed_hours)) 那么,如何使用PySpark将新列(基于Python向量)添加到现有DataFrame中?

19
在python shell中导入pyspark
这是其他论坛上从未有人回答过的其他人的问题的副本,因此我想在这里重新提问,因为我有同样的问题。(请参阅http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736) 我已经在机器上正确安装了Spark,并且在使用./bin/pyspark作为我的python解释器时,能够使用pyspark模块运行python程序而不会出错。 但是,当我尝试运行常规Python Shell时,当我尝试导入pyspark模块时,出现此错误: from pyspark import SparkContext 它说 "No module named pyspark". 我怎样才能解决这个问题?我是否需要设置环境变量以将Python指向pyspark标头/库/等?如果我的spark安装是/ spark /,我需要包括哪些pyspark路径?还是只能从pyspark解释器运行pyspark程序?

12
用Spark加载CSV文件
我是Spark的新手,正在尝试使用Spark从文件读取CSV数据。这是我在做什么: sc.textFile('file.csv') .map(lambda line: (line.split(',')[0], line.split(',')[1])) .collect() 我希望此调用可以给我列出文件的前两列,但出现此错误: File "<ipython-input-60-73ea98550983>", line 1, in <lambda> IndexError: list index out of range 尽管我的CSV文件不止一列。

8
将Spark DataFrame列转换为python列表
我在具有两列mvv和count的数据帧上工作。 +---+-----+ |mvv|count| +---+-----+ | 1 | 5 | | 2 | 9 | | 3 | 3 | | 4 | 1 | 我想获得两个包含mvv值和计数值的列表。就像是 mvv = [1,2,3,4] count = [5,9,3,1] 因此,我尝试了以下代码:第一行应返回python行列表。我想看第一个值: mvv_list = mvv_count_df.select('mvv').collect() firstvalue = mvv_list[0].getInt(0) 但是我在第二行收到一条错误消息: AttributeError:getInt

4
Spark Kill正在运行的应用程序
我有一个正在运行的Spark应用程序,该应用程序占据了所有我的其他应用程序都不会分配任何资源的核心。 我做了一些快速研究,有人建议使用YARN kill或/ bin / spark-class终止命令。但是,我正在使用CDH版本,并且/ bin / spark-class甚至根本不存在,YARN kill应用程序也不起作用。 谁能和我一起吗?

5
如何在pyspark中将Dataframe列从String类型更改为Double类型
我有一个列为String的数据框。我想在PySpark中将列类型更改为Double type。 以下是我的方法: toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType()) changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show'])) 只是想知道,这是正确的方法,就像通过Logistic回归运行时一样,我遇到了一些错误,所以我想知道,这是麻烦的原因。

10
使用无值过滤Pyspark数据框列
我正在尝试过滤具有None作为行值的PySpark数据框: df.select('dt_mvmt').distinct().collect() [Row(dt_mvmt=u'2016-03-27'), Row(dt_mvmt=u'2016-03-28'), Row(dt_mvmt=u'2016-03-29'), Row(dt_mvmt=None), Row(dt_mvmt=u'2016-03-30'), Row(dt_mvmt=u'2016-03-31')] 我可以使用字符串值正确过滤: df[df.dt_mvmt == '2016-03-31'] # some results here 但这失败了: df[df.dt_mvmt == None].count() 0 df[df.dt_mvmt != None].count() 0 但是每个类别上肯定都有价值。这是怎么回事?


18
如何在Spark中设置驱动程序的python版本?
我使用的是spark 1.4.0-rc2,因此可以将Python 3与spark一起使用。如果添加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无效。

11
Spark错误-不支持的类文件主要版本
我正在尝试在Mac上安装Spark。我使用自制软件安装了spark 2.4.0和Scala。我已经在Anaconda环境中安装了PySpark,并且正在使用PyCharm进行开发。我已经导出到我的bash个人资料: export SPARK_VERSION=`ls /usr/local/Cellar/apache-spark/ | sort | tail -1` export SPARK_HOME="/usr/local/Cellar/apache-spark/$SPARK_VERSION/libexec" export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH 但是我无法使其正常工作。 我怀疑这是由于Java版本读取了回溯。我非常感谢您为解决此问题提供的帮助。如果有任何我可以提供的信息,那么请发表评论,这些信息除了回溯之外还有帮助。 我收到以下错误: Traceback (most recent call last): File "<input>", line 4, in <module> File "/anaconda3/envs/coda/lib/python3.6/site-packages/pyspark/rdd.py", line 816, in collect sock_info = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd()) File "/anaconda3/envs/coda/lib/python3.6/site-packages/py4j/java_gateway.py", line 1257, in __call__ answer, self.gateway_client, self.target_id, self.name) File …

8
如何删除pyspark数据框中的列
>>> a DataFrame[id: bigint, julian_date: string, user_id: bigint] >>> b DataFrame[id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint] >>> a.join(b, a.id==b.id, 'outer') DataFrame[id: bigint, julian_date: string, user_id: bigint, id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint] 有两个id: bigint,我想删除一个。我能怎么做?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.