来自像这样的PySparkSQL数据框nameagecityabc20Adef30B如何获取最后一行。(就像df.limit(1)我可以将数据帧的第一行放入新数据帧)。以及如何通过索引访问数据帧行。如行号。12或200。在pandas中我可以做到df.tail(1)#forlastrowdf.ix[rownoorindex]#byindexdf.loc[]orbydf.iloc[]我只是好奇如何以这种方式或替代方式访问pyspark数据框。谢谢 最佳答案 Howtogetthelastrow.漫长而丑陋的方式,假设所有列都是可订购的
在下面的示例中,df.a==1谓词返回正确的结果,但是df.a==None在应该返回1时返回0。l=[[1],[1],[2],[2],[None]]df=sc.parallelize(l).toDF(['a'])df#DataFrame[a:bigint]df.collect()#[Row(a=1),Row(a=1),Row(a=2),Row(a=2),Row(a=None)]df.where(df.a==1).count()#2Ldf.where(df.a==None).count()#0L使用星火1.3.1 最佳答案 您可以使用
我正在尝试运行这段代码:importpysparkfrompyspark.sqlimportSparkSessionspark=SparkSession.builder\.master("local")\.appName("WordCount")\.getOrCreate()df=spark.createDataFrame([(1,144.5,5.9,33,'M'),(2,167.2,5.4,45,'M'),(3,124.1,5.2,23,'F'),(4,144.5,5.9,33,'M'),(5,133.2,5.7,54,'F'),(3,124.1,5.2,23,'F'),(5,129
我有一个带有一列数字的pyspark数据框。我需要对该列求和,然后将结果作为int返回到python变量中。df=spark.createDataFrame([("A",20),("B",30),("D",80)],["Letter","Number"])我执行以下操作来对列求和。df.groupBy().sum()但是我得到了一个数据框。+-----------+|sum(Number)|+-----------+|130|+-----------+我会将130作为存储在变量中的int返回,以便在程序的其他地方使用。result=130 最佳答案
我在PySpark中有这样的DataFrame(这是一次take(3)的结果,dataframe很大):sc=SparkContext()df=[Row(owner=u'u1',a_d=0.1),Row(owner=u'u2',a_d=0.0),Row(owner=u'u1',a_d=0.3)]相同的owner将有更多的行。我需要做的是在分组后对每个所有者的字段a_d的值求和,如b=df.groupBy('owner').agg(sum('a_d').alias('a_d_sum'))但这会引发错误TypeError:unsupportedoperandtype(s)for+:'int
我正在使用cassandra2.0.3,我想使用pyspark(ApacheSparkPythonAPI)从cassandra数据创建一个RDD对象。请注意:我不想导入CQL,然后从pysparkAPI进行CQL查询,而是想创建一个RDD,我想在其上进行一些转换。我知道这可以在Scala中完成,但我无法找出如何从pyspark中完成。如果有人能指导我,我将不胜感激。 最佳答案 可能与您不再相关,但我一直在寻找相同的东西,但找不到任何让我满意的东西。所以我做了一些工作:https://github.com/TargetHolding/
让我们从一个总是返回随机整数的简单函数开始:importnumpyasnpdeff(x):returnnp.random.randint(1000)和一个用0填充并使用f映射的RDD:rdd=sc.parallelize([0]*10).map(f)由于上面的RDD没有持久化,我希望每次收集时我都会得到不同的输出:>rdd.collect()[255,512,512,512,255,512,255,512,512,255]如果我们忽略值的分布看起来并不是真正随机的事实,它或多或少会发生这种情况。当我们只取第一个元素时,问题就开始了:assertlen(set(rdd.first()fo
我们如何获取列pyspark数据框的名称?AliceEleonoraMikeHelenMAX02786Mike111594Alice2615123Eleonora35378Helen我需要这样的东西。列的名称没有最大值,我能够获得最大值,我需要名称 最佳答案 您可以链接条件以查找哪些列等于最大值:cond="psf.when"+".when".join(["(psf.col('"+c+"')==psf.col('max_value'),psf.lit('"+c+"'))"forcindf.columns])importpyspark
例如我有一个文件夹:/-test.py-test.yml作业被提交到spark集群:gcloudbetadataproc作业提交pyspark--files=test.yml"test.py"在test.py中,我想访问我上传的静态文件。withopen('test.yml')astest_file:logging.info(test_file.read())但出现以下异常:IOError:[Errno2]Nosuchfileordirectory:'test.yml'如何访问我上传的文件? 最佳答案 可以通过SparkFiles访
我正在尝试从Amazons3读取一个JSON文件,以创建一个spark上下文并使用它来处理数据。Spark基本上是在一个docker容器中。所以把文件放在docker路径也是PITA。因此将其推到S3。下面的代码解释了其余的内容。frompysparkimportSparkContext,SparkConfconf=SparkConf().setAppName("first")sc=SparkContext(conf=conf)config_dict={"fs.s3n.awsAccessKeyId":"**","fs.s3n.awsSecretAccessKey":"**"}bucke