Pyspark列的十分位数或其他分位数秩

我有一个带有多个数字列的pyspark DF,我想,对于每一列,根据每个变量计算该行的小数点或其他分位数秩 这对于熊猫来说很简单,因为我们可以使用qcut函数为每个变量创建一个新列,将值0分配给n-1,如pd.qcut(x,q=n)中的“q” 如何在pyspark中实现这一点?我试过以下方法,但很明显,三分之一之间的断点并不唯一。我想得到分配给1的下1/3数据,分配给2的下1/3数据和分配给3的上1/3数据。我希望能够改变这一点,也许使用1/10,1/32等 w = Window.partit

updatestatebykey-Pyspark-Spark流媒体

我是个新手。试图理解UpdateStateByKey操作的重要性?它有什么用?存储任意状态的必要性是什么?它是如何工作的?updateStateByKey方法允许您基于来自流的数据创建状态信息 例如,如果您有一个天气传感器,它以传感器id、时间戳、值的格式发送给定传感器id的当前状态,如风速、温度,您可以使用updateStateByKey来构建一个表示传感器间当前天气状态的流,如[sensor_1,current_weather_data,sensor_2,current_weather_da

Pyspark 统计SPARKSQL中重复的行数

我需要计算配置单元表的SparkSQL中重复行的数量 from pyspark import SparkContext, SparkConf from pyspark.sql import HiveContext from pyspark.sql.types import * from pyspark.sql import Row app_name="test" conf = SparkConf().setAppName(app_name) sc = SparkContext(conf=conf

Pyspark |使用值列表从键转换RDD>;具有键列表的值

在pyspark中,如何将输入RDD(其中每个键都有一个值列表)转换为输出RDD(其中每个值都有它所属的键列表) 输入 [(1, ['a','b','c','e']), (2, ['b','d']), (3, ['a','d']), (4, ['b','c'])] [('a', [1, 3]), ('b', [1, 2, 4]), ('c', [1, 4]), ('d', [2,3]), ('e', [1])] 输出 [(1, ['a','b','c','e']), (2, ['b','d'

Pyspark 超过阈值后重置的累积总和

一般来说,我对pyspark和python比较陌生。这可能很琐碎,但我不太明白 我有一个数据集,它包含一个ID、一个日期列和一个包含浮点数的X列。我想做的是,在ID和按日期排序的基础上,计算运行总数X。当运行总数超过值Y时,重新启动总数。下面是一个示例,其中Y=20: |ID |DATE | X | cumsum_X | ----------------------------------- | 1| 2017-03-01| 10| 10| | 1|

将列表转换为pyspark中的dataframe列

我有一个数据框,其中一个字符串类型列包含一个项目列表,我想分解这些项目,使其成为父数据框的一部分。我怎么做 以下是创建示例数据帧的代码: from pyspark.sql import Row from collections import OrderedDict def convert_to_row(d: dict) -> Row: return Row(**OrderedDict(sorted(d.items()))) df=sc.parallelize([{"arg1":

Pyspark 如何推断现有Spark数据帧的数据类型?

我已将一个长数据帧旋转到宽数据帧。这个新的数据框架有更多的新变量从枢轴中产生。这些都是Spark数据框中的stringType。我如何才能让pyspark重新推断这些新列的数据类型,以便将小数识别为float/double而不是字符串 背景:每个表中这些新列的数量和数据透视表的数量太大,无法手动构建模式 如果PySpark中有类似于Pandas的推断对象(),那就太好了。我不能使用Pandas,因为该工作位于AWS Glue Spark中,它不提供Pandas库。您可以使用类来处理您的问题。您可

Pyspark 如何从CSV文件中清除数据

示例name.csv数据: Name, ,Age, ,Class, Diwakar,, ,25,, ,12, , , , , , Prabhat, ,27, ,15, Zyan, ,30, ,17, Jack, ,35, ,21, 读取csv文件: names = spark.read.csv("name.csv", header="true", inferSchema="true") names.show() 将此作为输出,我们将丢失一些数据: +-------+----+---+---

使用pyspark读取多个csv文件

我需要一次读取多个csv文件。现在,这些csv文件可能具有可变的列数和任意顺序。我们要求从csv文件中只读取特定列。我们怎么做?我曾尝试定义自定义模式,但后来我在列中得到了不同的数据 例如: CSV文件 身份证、姓名、地址 如何仅选择Id和地址列。因为若我说select(Id,Address),那个么它会在Address列中给我Id和Name数据。在读取时,我只想根据标题名称选择ID和地址列 谢谢, Naveed您可以迭代文件并创建最终数据帧,如: files = ['path/to/file1

pyspark数据帧上的复杂逻辑,包括前一行现有值以及动态生成的前一行值

我必须在spark dataframe或rdd(最好是dataframe)上应用逻辑,这需要生成两个额外的列。第一个生成的列依赖于同一行的其他列,第二个生成的列依赖于前一行的第一个生成列 以下是问题陈述的表格形式。A和B列在dataframe中可用。将生成C和D列 A | B | C | D ------------------------------------ 1 | 100 | default val | C1-B1 2 | 200 | D

Pyspark 如何在新的databricks connect中正确使用sql/hive变量

我正在测试新的databricks connect,我经常在databricks上的python脚本中使用sql变量,但是我无法通过dbconnect使用这些变量。下面的示例在databricks中运行良好,但在dbconnect中不起作用: from pyspark.sql import SparkSession from pyspark.sql import SQLContext import pandas as pd spark = SparkSession.builder.getOrC

pyspark如何检查给定的spark数据帧是否已使用inferSchema=True创建

我正在开发一个API,其中一个函数应该接收spark数据框,并使用spark数据框中的模式执行操作 由于不能保证用户将创建数据帧并将推断模式设置为True,因此我的函数将收到一个没有推断模式的数据帧,因此如果出现这种情况,我想抛出一个错误 我是否可以检查数据帧是否已使用inferSchema=True创建? 还是有一个pyspark函数可以在创建数据帧后推断模式 由于inferSchema=False所有列都是StringType,因此我不能基于此拒绝数据帧,因为这是某些数据帧的可能模式。不,它

自定义模块中的函数在PySpark中不起作用,但在交互模式下输入时起作用

我编写了一个模块,其中包含作用于PySpark数据帧的函数。它们对数据帧中的列进行转换,然后返回一个新的数据帧。下面是一个代码示例,缩短为仅包含一个函数: from pyspark.sql import functions as F from pyspark.sql import types as t import pandas as pd import numpy as np metadta=pd.DataFrame(pd.read_csv("metadata.csv")) # this

sqlContext.sql返回计数为0的表,pyspark

我正在运行一个spark应用程序,通过pyspark交互式shell使用EMR 我正在尝试连接到一个名为:content\u publisher\u events\u log的配置单元表,通过我的色调控制台使用完全相同的查询,我知道该表不是空的,但当我尝试通过pyspark读取它时,我得到count=0,如下所示: from pyspark.sql import HiveContext Query=""" select dt from default.content_publisher_eve

是否有人试图查找外部API';谁在用PySpark?

检查是否有人使用pyspark分发数据,并使用pyspark查找外部API和存储结果 我正在研究这个问题: 我有一个包含100000行用户代理的源文件。我必须查找一个外部API(使用请求),获取用户代理的特征,并存储这些特征。我能够以合理的方式通过队列和线程来实现这一点。 然而,我注意到,10万行数可能会变成100万行 我在考虑是否可以使用Spark来分发这些数据,并使用执行器以并行方式执行API查找操作 有人做到了吗?你能解释一下外部api吗。它是否连接到某个数据库或文件系统。Spark支持j

如何将PySpark中的数据帧输出保存到文本文件?

我在下面有一个数据框(表),我在第3列和第4列上使用sum函数 df.show() +---------+------+---+---+ | _1| _2| _3| _4| +---------+------+---+---+ | playerID|yearID| HR|RBI| |aardsda01| 2004| 0| 0| |aardsda01| 2006| 0| 0| |aardsda01| 2007| 0| 0| |aardsda01| 2008|

我们可以从AWS Glue PySpark作业触发AWS Lambda函数吗?

目前我可以运行Glue PySpark作业,但这是否可以从Glue此作业调用lambda函数?使用我的PySparkGlue作业中的以下代码,我正在调用lambda函数 lambda_client = boto3.client('lambda', region_name='us-west-2') response = lambda_client.invoke(FunctionName='test-lambda') 错误: botocore.exceptions.ClientError:调用调

Pyspark(Databricks)性能问题。NLP问题

我在Pyspark的Databricks中使用NLP任务时遇到性能问题: 上下文: 我有2个pyspark数据帧,其中包含一个“ID”列和一个“文本”列,例如: Table A | Table B ID_A TEXT_A | ID_B TEXT_B 0 text_A0 | 0 text_B0 1 text_A1 | 1 text_B1 2 text_A2

PySpark中随机森林回归的实现

在所有数据准备工作完成后,我想在pyspark中实现随机森林回归。我想要实现的示例代码。来自文档: >>> from numpy import allclose >>> from pyspark.ml.linalg import Vectors >>> from pyspark.ml.regression import RandomForestRegressor >>> df = spark.createDataFrame(

在pyspark RDD中保存删除的重复项

从这里,我们学习了如何删除基于某些特定变量的重复观测值。如果我想以RDD的形式保存这些重复的观察结果,该怎么办?我猜rdd.substract()如果rdd包含数十亿个观察值,可能效率不高。所以除了使用rdd.substract(),还有其他方法可以使用吗 如果您需要两个数据集,一个数据集只有不同的值,另一个数据集有重复的值,那么应该使用subtract。这将提供准确的结果。如果您只需要副本,您可以使用sql来获得它 df.createOrReplaceTempView('mydf') df2

Pyspark 创建不在spark中工作的外部表,在Athena中工作

我正在尝试使用pyspark创建一个外部表 我的代码类似于以下代码: query=""" CREATE EXTERNAL TABLE IF NOT EXISTS myschema.mytable ( col1 STRING, col2 STRING, col3 STRING, col4 STRING, ... ... a further 600+ columns here ... ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.Ope

与pyspark nc3的ncr组合

需要ncr输出才能在pyspark代码中包含以下三个标签组合 ['AAA','AAB','AAC','AAD','AAE','AAF','AAG','AAH','AAI','AAJ','AAK','AAL','AAM','AAN','AAO','AAP','AAQ','AAR','AAS','BAB','BAC','BAI','BAK','BAL','BAM','BAK','BAP','BAQ','BAM','BAT','BAU','BAV','YYT','YY YYX'] random42 =

PYSPARK-读取、转换EBCDIC大型机文件并将其拆分为数据帧

我们有一个EBCDIC大型机格式文件,它已经加载到Hadoop HDFS系统中。该文件也具有相应的COBOL结构。我们必须从HDFS读取此文件,将文件数据转换为ASCII格式,并需要根据其COBOL结构将数据拆分为数据帧。我尝试了一些似乎不起作用的选择。任何人都可以向我们推荐一些行之有效的方法。查找COBOL语言参考手册以及DISPLAY-OF和National OF的研究功能。链接: 对于python,请查看Copybook包()。它支持Copybook的大多数功能,包括重定义和发生以及多种P

Pyspark Knime BigData本地环境和;芬兹公园

我只是想知道:是否可以访问Knime中发布的 我在Knime工作流中有一个节点。在Knime之外,我编写了一个Python脚本,使用但是。。。它似乎没有检测到它 有这样做的例子或建议吗 提前感谢您可以访问Hive,而Spark和HDFS则无法访问。您可以通过JDBC和端口连接到配置单元,该端口在节点执行时随机化。有关它的信息应该在第一个输出端口-DB会话中。可以访问配置单元,而Spark和HDFS则不能访问。您可以通过JDBC和端口连接到配置单元,该端口在节点执行时随机化。有关它的信息应在第一个

使用UDF';pyspark中的s和simpe数据帧

我是pyspark的新手,来这里尝试做下面的事情 为每个cookie调用函数PrintDetails,然后将结果写入文件。sql查询返回正确的数据,我也可以将其序列化为文件。 是否有人可以帮助处理每个cookie上的for语句。调用UDF的语法应该是什么?如何将输出写入文本文件 感谢您的帮助。 谢谢 你可以像下面这样做 cookie_df= cookie_and_time.withColumn("cookies",PrintDetails(cookie('cookie'), cookie('im

如何在Pyspark中获取列的列表视图和NaN/Null的百分比?

我正在我的数据集上运行一个简单的EDA,它有59K行和21列。我想看到的是所有列的列表以及空/非空的百分比。我在虚拟机的Jupyter中运行了以下代码: #Checking nulls by column from pyspark.sql.functions import * null_df = datingDF.select([(count(when(isnan(c) | col(c).isNull(), c))/count(lit(1))).alias(c) for c in datingD

PySpark:使用Split和withColumn将具有不同字符标记的DF列拆分为另一列

您好,我在数据框中有此列: |事件时间| 2019-12-01 00:17: 2019-12-01 00:17: 2019-12-01 00:17: 2019-12-01 00:17: 2019-12-01 00:17: ____________________________________________________________" 我想拆分event_time列,在这里,一天被放入一个day列,一小时被放入一个hour列。 这里是我到目前为止所拥有的(注意,我的数据帧称为purcha

有没有办法在pyspark中用空格重命名或别名列

我在重命名列时出错,因为列名中有空格,我是否可以重命名它 df=df.withcolumn重命名(“标准偏差”、“标准偏差”) 错误:AnalysisException:属性名称“std偏差”包含“,;{}()\n\t=”之间的无效字符。请使用别名重命名它。 我尝试了另一种使用alias的方法,但没有成功 df=df.选择(列(“标准偏差”).别名(“标准偏差”)) 有没有办法重命名包含空格的列 错误:AnalysisException:属性名称“std偏差”包含“,;{}()\n\t=”之间的

Pyspark数据帧类型错误:应为字符串或缓冲区

我正在Pyspark中为现有数据帧创建一个新的coulmn,方法是搜索一个已归档的“script”并返回match作为新列的条目 import re as re def sw_fix(data_str): if re.compile(r'gaussian').search(data_str): cleaned_str = 'gaussian' elif re.compile(r'gromacs').search(data_str):

Pyspark 过滤掉hivecontext.sql中的空字符串和空字符串

我正在使用pyspark和hivecontext.sql,我想从数据中过滤掉所有空值和空值 因此,我使用简单的sql命令首先过滤掉空值,但它不起作用 我的代码: hiveContext.sql("select column1 from table where column2 is not null") 但是它在没有表达式“where column2不为null”的情况下工作 错误: Py4JavaError: An error occurred while calling o577.showS

Pyspark Pypark连接表

我是Pypark的新手。我有'Table A'和'Table B',我需要将两者连接起来才能得到'Table C'。有人能帮我吗 我正在使用数据帧 我不知道如何以正确的方式将这些表连接在一起 表A: +--+----------+-----+ |id|year_month| qt | +--+----------+-----+ | 1| 2015-05| 190 | | 2| 2015-06| 390 | +--+----------+-----+ +---------+--

Pyspark 文本挖掘:使用Word2Vec对有毒评论的错误预测

我有一个包含句子和布尔列(0或1)的数据集来分类评论的类型(有毒|严重|有毒|淫秽|威胁|侮辱|身份|仇恨)。 您可以在此处下载数据集: 我用空格过滤单词,只保留有用的单词,我保留了:形容词、副词、动词和名词使用此功能: def filter_words(words) : vec = [] conditions = ('ADV','NOUN','ADJ','VERB') for token in nlp(words): if not token.is_stop and toke

聚合pyspark中的一个热编码特征

我对python很有经验,但对pyspark完全陌生。我有一个dataframe,它包含大约50万行,具有几个分类特性。对于每个功能,我都有一个热编码功能。下面是一个简化但具有代表性的代码示例 从pyspark.ml.feature导入StringIndexer,OneHotEncoder 从pyspark.ml导入管道 df = sc.parallelize([ (1, 'grocery'), (1, 'drinks'), (1, 'bakery'),

如何在不使用StandardScaler的情况下标准化PySpark中的列?

看起来这应该行得通,但我有错误: mu=平均值DF[输入] sigma=stddevdf[输入] dft=df.withColumnoutput,df[输入]-mu/sigma pyspark.sql.utils.AnalysisException:分组表达式序列为 空,并且''user`'不是聚合函数。包 '将'sumresponse'转换为双平均'sumresponse''/ stddev_sampCAST`sumsresponse`与中的`scaled`'相同 窗口函数或在第一个或第一个值

动态传递查询字符串以在PySpark数据帧方法selectExpr()中选择列

我动态生成一个查询字符串,如下所示,并将其传递给selectExpr() 根据文件 选择expr(*expr): 投影一组SQL表达式并返回一个新的数据帧。 这是接受SQL表达式的select()的一个变体 问题在于变量“queryString”被视为单个字符串,而不是三个单独的列(这是正确的)。错误如下: :org.apache.spark.sql.catalyst.parser.ParseException: ==SQL== “类别id为类别id”、“类别部门id为类别dpt\U id”、

orderBy如何影响Pyspark数据框架中的Window.partitionBy?

我通过一个例子来解释我的问题: 假设我们有一个数据帧,如下所示: original_df = sc.createDataFrame([('x', 10,), ('x', 15,), ('x', 10,), ('x', 25,), ('y', 20,), ('y', 10,), ('y', 20,)], ["key", "price"] ) original_df.show() 输出: +---+-----+ |key|price| +---+-----+ | x| 10| | x|

Pyspark java.net.SocketTimeoutException:接受超时

我有以下代码: a) 生成本地Spark实例: # Load data from local machine into dataframe from pyspark.sql import SparkSession spark = SparkSession.builder.appName("Basic").master("local[*]").config("spark.network.timeout","50s").config("spark.executor.heartbeatInterval

PySpark:一段时间后并行度降低了?

我正在AWS胶水上使用PySpark。当我查看我的工作指标时,通常如下所示: 请注意,执行人的数量在一段时间后会下降,这是为什么?而且,洗牌是尖锐的,这是因为数据处理——在获得数据之后,需要很长时间吗?我怀疑我的工作中有些地方不是最优的。它依靠一台机器来完成大部分工作。但它是哪一部分呢?有什么建议吗 我的代码: import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions fro

pyspark数据管道使用中间结果

在pyspark中,我会对数据帧执行连续操作,并希望从中间结果中获得输出。但它总是需要相同的时间,我想知道它是否缓存过任何东西?不同的问题是,使用中介结果的最佳实践是什么?在dd.compute(df.amount.max(),df.amount.min())中,将找出需要缓存和计算的内容。pyspark中是否有类似的版本 在下面的示例中,当它到达print()时,它会执行3x吗 df_purchase = spark.read.parquet("s3a:/example/location")[

pyspark中有没有一种方法可以将文件从远程位置快速复制到本地

我正在使用mget参数使用lftp从远程位置复制文件。将50个xml文件从sftp机器复制到本地Unix机器大约需要2分钟。我希望能够复制20k个文件。XML文件约为15kb。dataframe df_文件包含我要复制的所有XML文件的列表 我用20000个文件尝试了下面的代码,似乎需要几个小时才能用这些文件创建一个数据帧 for row in df_files.tolist(): print row cmd_p1 = """lftp sftp://userna

Pyspark 如何将文本文件从Databricks笔记本上传到FTP

我试图找到一个解决办法,但一无所获。我在这方面是新手,所以如果你知道解决方案,请帮助我。 谢谢 在Databricks中,您可以使用下面描述的任何一种方法访问存储在ADL中的文件。 有三种访问Azure Data Lake存储Gen2的方法: 使用服务主体和OAuth 2.0将Azure Data Lake Storage Gen2文件系统装载到DBFS 直接使用服务主体 直接使用Azure Data Lake Storage Gen2存储帐户访问密钥 将文件系统中的文件当作本地文件装载和访问的

Pyspark-udf中的更新列表

是否有可能更新udf中的列表/变量 让我们考虑一下这个场景: studentsWithNewId = [] udfChangeStudentId = udf(changeStudentId, IntegerType()) def changeStudentId(studentId): if condition: newStudentId = computeNewStudentId() // this function is based on studentsWith

Pyspark 在功能和时间上聚合数据

我有一个10分钟间隔的pyspark数据帧,如何在一个分类特征和2小时的时间内聚合它,然后计算其他两个特征的平均值和第三个特征的第一个值 在pyspark中,我的示例数据如下所示。我想按“ind”和“date”的2小时时间分组,然后计算“sal”的平均值和“imp”的第一个值 from pyspark import SparkContext from pyspark.sql import SQLContext sc = SparkContext.getOrCreate() sqlContext

为什么pyspark只能从根目录查找本地配置单元元存储?

我有一个关于delta lake的hive metastore支持的问题, 我已经使用以下配置在独立spark会话上定义了元存储 pyspark --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension"

Pyspark-基于列表或词汇表创建列

我是Pyspark的新手,我有一个包含客户id和文本的数据框,其中包含一个关联的值 +------+-----+------+ |id |text |value | +------+-----+------+ | 1 | Cat| 5| | 1 | Dog| 4| | 2 | Oil| 1| 我想基于关键字列表分析文本列,并创建一列,告诉我关键字是否在文本字段中,并提取相关值,预期结果如下 List_keywords = ["D

计算Pyspark数据帧中的运行总数,并在出现情况时中断循环

我有一个spark数据框,其中我需要根据当前行和前一行基于col_x值的金额总和来计算运行总数。当列中出现负数时,我应该打破以前记录的运行总计,并从当前行开始执行运行总计 样本数据集: 预期输出应如下所示: 如何使用pyspark通过数据帧实现这一点?我希望在实际场景中,您将有一个时间戳列来对数据进行排序,我使用带有zipindex的行号对数据进行排序,作为这里的解释基础 from pyspark.sql.window import Window import pyspark.sql.fun

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 64 页