我有一个带有多个数字列的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操作的重要性?它有什么用?存储任意状态的必要性是什么?它是如何工作的?updateStateByKey方法允许您基于来自流的数据创建状态信息
例如,如果您有一个天气传感器,它以传感器id、时间戳、值的格式发送给定传感器id的当前状态,如风速、温度,您可以使用updateStateByKey来构建一个表示传感器间当前天气状态的流,如[sensor_1,current_weather_data,sensor_2,current_weather_da
标签: Pyspark
apache-spark-sqlspark-dataframepyspark-sql
我需要计算配置单元表的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(其中每个键都有一个值列表)转换为输出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和python比较陌生。这可能很琐碎,但我不太明白
我有一个数据集,它包含一个ID、一个日期列和一个包含浮点数的X列。我想做的是,在ID和按日期排序的基础上,计算运行总数X。当运行总数超过值Y时,重新启动总数。下面是一个示例,其中Y=20:
|ID |DATE | X | cumsum_X |
-----------------------------------
| 1| 2017-03-01| 10| 10|
| 1|
我想从两列中删除重复的行。包含两个值的行具有相同的记录,但顺序相反
|--------------|-------------------|
| name | alt_name |
|----------------------------------|
| a10.samsung | a20.samsung |
| x.iphone | xr.iphone |
| 3.nokia | 5.nokia
我有一个数据框,其中一个字符串类型列包含一个项目列表,我想分解这些项目,使其成为父数据框的一部分。我怎么做
以下是创建示例数据帧的代码:
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":
我在一个类中有一个rdd,我将map函数定义为class method,当我将map函数传递给pyspark map时,它引发了一个错误:py4j.Py4JException:method\uuu getstate\uuu([])不存在,我的代码:
class A(object):
def __init__(self):
conf = SparkConf().setMaster("local[*]").setAppName("A")
self.spark = SparkSessi
标签: Pyspark
schemaetlaws-gluepyspark-dataframes
我已将一个长数据帧旋转到宽数据帧。这个新的数据框架有更多的新变量从枢轴中产生。这些都是Spark数据框中的stringType。我如何才能让pyspark重新推断这些新列的数据类型,以便将小数识别为float/double而不是字符串
背景:每个表中这些新列的数量和数据透视表的数量太大,无法手动构建模式
如果PySpark中有类似于Pandas的推断对象(),那就太好了。我不能使用Pandas,因为该工作位于AWS Glue Spark中,它不提供Pandas库。您可以使用类来处理您的问题。您可
标签: Pyspark
pyspark-sqlpyspark-dataframes
示例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()
将此作为输出,我们将丢失一些数据:
+-------+----+---+---
我需要一次读取多个csv文件。现在,这些csv文件可能具有可变的列数和任意顺序。我们要求从csv文件中只读取特定列。我们怎么做?我曾尝试定义自定义模式,但后来我在列中得到了不同的数据
例如:
CSV文件
身份证、姓名、地址
如何仅选择Id和地址列。因为若我说select(Id,Address),那个么它会在Address列中给我Id和Name数据。在读取时,我只想根据标题名称选择ID和地址列
谢谢,
Naveed您可以迭代文件并创建最终数据帧,如:
files = ['path/to/file1
我必须在spark dataframe或rdd(最好是dataframe)上应用逻辑,这需要生成两个额外的列。第一个生成的列依赖于同一行的其他列,第二个生成的列依赖于前一行的第一个生成列
以下是问题陈述的表格形式。A和B列在dataframe中可用。将生成C和D列
A | B | C | D
------------------------------------
1 | 100 | default val | C1-B1
2 | 200 | D
标签: Pyspark
apache-spark-sqldatabricksazure-databricksdatabricks-connect
我正在测试新的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
我正在开发一个API,其中一个函数应该接收spark数据框,并使用spark数据框中的模式执行操作
由于不能保证用户将创建数据帧并将推断模式设置为True,因此我的函数将收到一个没有推断模式的数据帧,因此如果出现这种情况,我想抛出一个错误
我是否可以检查数据帧是否已使用inferSchema=True创建?
还是有一个pyspark函数可以在创建数据帧后推断模式
由于inferSchema=False所有列都是StringType,因此我不能基于此拒绝数据帧,因为这是某些数据帧的可能模式。不,它
我编写了一个模块,其中包含作用于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
我正在运行一个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
检查是否有人使用pyspark分发数据,并使用pyspark查找外部API和存储结果
我正在研究这个问题:
我有一个包含100000行用户代理的源文件。我必须查找一个外部API(使用请求),获取用户代理的特征,并存储这些特征。我能够以合理的方式通过队列和线程来实现这一点。
然而,我注意到,10万行数可能会变成100万行
我在考虑是否可以使用Spark来分发这些数据,并使用执行器以并行方式执行API查找操作
有人做到了吗?你能解释一下外部api吗。它是否连接到某个数据库或文件系统。Spark支持j
我在下面有一个数据框(表),我在第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|
目前我可以运行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任务时遇到性能问题:
上下文:
我有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中实现随机森林回归。我想要实现的示例代码。来自文档:
>>> from numpy import allclose
>>> from pyspark.ml.linalg import Vectors
>>> from pyspark.ml.regression import RandomForestRegressor
>>> df = spark.createDataFrame(
从这里,我们学习了如何删除基于某些特定变量的重复观测值。如果我想以RDD的形式保存这些重复的观察结果,该怎么办?我猜rdd.substract()如果rdd包含数十亿个观察值,可能效率不高。所以除了使用rdd.substract(),还有其他方法可以使用吗 如果您需要两个数据集,一个数据集只有不同的值,另一个数据集有重复的值,那么应该使用subtract。这将提供准确的结果。如果您只需要副本,您可以使用sql来获得它
df.createOrReplaceTempView('mydf')
df2
我正在尝试使用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
需要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
asciipyspark-sqlmainframepyspark-dataframes
我们有一个EBCDIC大型机格式文件,它已经加载到Hadoop HDFS系统中。该文件也具有相应的COBOL结构。我们必须从HDFS读取此文件,将文件数据转换为ASCII格式,并需要根据其COBOL结构将数据拆分为数据帧。我尝试了一些似乎不起作用的选择。任何人都可以向我们推荐一些行之有效的方法。查找COBOL语言参考手册以及DISPLAY-OF和National OF的研究功能。链接: 对于python,请查看Copybook包()。它支持Copybook的大多数功能,包括重定义和发生以及多种P
我只是想知道:是否可以访问Knime中发布的
我在Knime工作流中有一个节点。在Knime之外,我编写了一个Python脚本,使用但是。。。它似乎没有检测到它
有这样做的例子或建议吗
提前感谢您可以访问Hive,而Spark和HDFS则无法访问。您可以通过JDBC和端口连接到配置单元,该端口在节点执行时随机化。有关它的信息应该在第一个输出端口-DB会话中。可以访问配置单元,而Spark和HDFS则不能访问。您可以通过JDBC和端口连接到配置单元,该端口在节点执行时随机化。有关它的信息应在第一个
标签: Pyspark
pyspark-sqlpyspark-dataframes
我是pyspark的新手,来这里尝试做下面的事情
为每个cookie调用函数PrintDetails,然后将结果写入文件。sql查询返回正确的数据,我也可以将其序列化为文件。
是否有人可以帮助处理每个cookie上的for语句。调用UDF的语法应该是什么?如何将输出写入文本文件
感谢您的帮助。
谢谢
你可以像下面这样做
cookie_df= cookie_and_time.withColumn("cookies",PrintDetails(cookie('cookie'), cookie('im
我正在我的数据集上运行一个简单的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
splitpyspark-dataframes
您好,我在数据框中有此列:
|事件时间|
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
我在重命名列时出错,因为列名中有空格,我是否可以重命名它
df=df.withcolumn重命名(“标准偏差”、“标准偏差”)
错误:AnalysisException:属性名称“std偏差”包含“,;{}()\n\t=”之间的无效字符。请使用别名重命名它。
我尝试了另一种使用alias的方法,但没有成功
df=df.选择(列(“标准偏差”).别名(“标准偏差”))
有没有办法重命名包含空格的列
错误:AnalysisException:属性名称“std偏差”包含“,;{}()\n\t=”之间的
我正在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,我想从数据中过滤掉所有空值和空值
因此,我使用简单的sql命令首先过滤掉空值,但它不起作用
我的代码:
hiveContext.sql("select column1 from table where column2 is not null")
但是它在没有表达式“where column2不为null”的情况下工作
错误:
Py4JavaError: An error occurred while calling o577.showS
我是Pypark的新手。我有'Table A'和'Table B',我需要将两者连接起来才能得到'Table C'。有人能帮我吗
我正在使用数据帧
我不知道如何以正确的方式将这些表连接在一起
表A:
+--+----------+-----+
|id|year_month| qt |
+--+----------+-----+
| 1| 2015-05| 190 |
| 2| 2015-06| 390 |
+--+----------+-----+
+---------+--
标签: Pyspark
text-miningrandom-forestword2vecspacy
我有一个包含句子和布尔列(0或1)的数据集来分类评论的类型(有毒|严重|有毒|淫秽|威胁|侮辱|身份|仇恨)。
您可以在此处下载数据集:
我用空格过滤单词,只保留有用的单词,我保留了:形容词、副词、动词和名词使用此功能:
def filter_words(words) :
vec = []
conditions = ('ADV','NOUN','ADJ','VERB')
for token in nlp(words):
if not token.is_stop and toke
我对python很有经验,但对pyspark完全陌生。我有一个dataframe,它包含大约50万行,具有几个分类特性。对于每个功能,我都有一个热编码功能。下面是一个简化但具有代表性的代码示例
从pyspark.ml.feature导入StringIndexer,OneHotEncoder
从pyspark.ml导入管道
df = sc.parallelize([
(1, 'grocery'),
(1, 'drinks'),
(1, 'bakery'),
看起来这应该行得通,但我有错误:
mu=平均值DF[输入]
sigma=stddevdf[输入]
dft=df.withColumnoutput,df[输入]-mu/sigma
pyspark.sql.utils.AnalysisException:分组表达式序列为
空,并且''user`'不是聚合函数。包
'将'sumresponse'转换为双平均'sumresponse''/
stddev_sampCAST`sumsresponse`与中的`scaled`'相同
窗口函数或在第一个或第一个值
标签: Pyspark
apache-spark-sqlpyspark-sql
我动态生成一个查询字符串,如下所示,并将其传递给selectExpr()
根据文件
选择expr(*expr):
投影一组SQL表达式并返回一个新的数据帧。
这是接受SQL表达式的select()的一个变体
问题在于变量“queryString”被视为单个字符串,而不是三个单独的列(这是正确的)。错误如下:
:org.apache.spark.sql.catalyst.parser.ParseException:
==SQL==
“类别id为类别id”、“类别部门id为类别dpt\U id”、
我通过一个例子来解释我的问题:
假设我们有一个数据帧,如下所示:
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|
我有以下代码:
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
apache-spark-sqlaws-glue
我正在AWS胶水上使用PySpark。当我查看我的工作指标时,通常如下所示:
请注意,执行人的数量在一段时间后会下降,这是为什么?而且,洗牌是尖锐的,这是因为数据处理——在获得数据之后,需要很长时间吗?我怀疑我的工作中有些地方不是最优的。它依靠一台机器来完成大部分工作。但它是哪一部分呢?有什么建议吗
我的代码:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
fro
在pyspark中,我会对数据帧执行连续操作,并希望从中间结果中获得输出。但它总是需要相同的时间,我想知道它是否缓存过任何东西?不同的问题是,使用中介结果的最佳实践是什么?在dd.compute(df.amount.max(),df.amount.min())中,将找出需要缓存和计算的内容。pyspark中是否有类似的版本
在下面的示例中,当它到达print()时,它会执行3x吗
df_purchase = spark.read.parquet("s3a:/example/location")[
标签: Pyspark
random-forestdecision-treeapache-spark-mladaptive-threshold
目前,已在具有以下分布的不平衡数据集上构建了随机森林分类器(来自Spark ML):
+-------+----------------+
| score | n_observations |
+-------+----------------+
| 0 | 256741 |
| 1 | 13913 |
| 2 | 7632 |
| 3 | 15877 |
| 4 |
我正在使用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
我试图找到一个解决办法,但一无所获。我在这方面是新手,所以如果你知道解决方案,请帮助我。
谢谢 在Databricks中,您可以使用下面描述的任何一种方法访问存储在ADL中的文件。
有三种访问Azure Data Lake存储Gen2的方法:
使用服务主体和OAuth 2.0将Azure Data Lake Storage Gen2文件系统装载到DBFS
直接使用服务主体
直接使用Azure Data Lake Storage Gen2存储帐户访问密钥
将文件系统中的文件当作本地文件装载和访问的
是否有可能更新udf中的列表/变量
让我们考虑一下这个场景:
studentsWithNewId = []
udfChangeStudentId = udf(changeStudentId, IntegerType())
def changeStudentId(studentId):
if condition:
newStudentId = computeNewStudentId() // this function is based on studentsWith
我有一个10分钟间隔的pyspark数据帧,如何在一个分类特征和2小时的时间内聚合它,然后计算其他两个特征的平均值和第三个特征的第一个值
在pyspark中,我的示例数据如下所示。我想按“ind”和“date”的2小时时间分组,然后计算“sal”的平均值和“imp”的第一个值
from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext.getOrCreate()
sqlContext
我们可以像下面那样指定编码吗
df.write.format(“text”).option(“encoding”,“UTF-8”).saveasTable您可以---如果您想创建外部表,也可以指定路径
df.write.option("path", "/some/path").option("encoding", "UTF-8").saveAsTable("t")
标签: Pyspark
delta-lakehive-metastore
我有一个关于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的新手,我有一个包含客户id和文本的数据框,其中包含一个关联的值
+------+-----+------+
|id |text |value |
+------+-----+------+
| 1 | Cat| 5|
| 1 | Dog| 4|
| 2 | Oil| 1|
我想基于关键字列表分析文本列,并创建一列,告诉我关键字是否在文本字段中,并提取相关值,预期结果如下
List_keywords = ["D
我有一个spark数据框,其中我需要根据当前行和前一行基于col_x值的金额总和来计算运行总数。当列中出现负数时,我应该打破以前记录的运行总计,并从当前行开始执行运行总计
样本数据集:
预期输出应如下所示:
如何使用pyspark通过数据帧实现这一点?我希望在实际场景中,您将有一个时间戳列来对数据进行排序,我使用带有zipindex的行号对数据进行排序,作为这里的解释基础
from pyspark.sql.window import Window
import pyspark.sql.fun
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 64 页