我从S3中读取一个.txt文件时没有遇到任何问题,如下所示
lines = sc.textFile("s3n://gvdata/ETL_Data/example.txt")
但是,当我想打开一个文件时,在其中写入一些内容并将其保存到S3中的bucket中
filename = "s3n://gvdata/myLog-%s.txt"%datetime.now().strftime('%d-%m-%y')
f = open(filename,'w')
f.write("blabla %s \n"
标签: Pyspark
virtualenvjupyter-labapache-spark-2.1.1
我已经在python virtualenv中安装了pyspark。我还安装了virtualenv中新发布的jupyterlab。我无法在jupyter笔记本中启动pyspark,因为我有可用的SparkContext变量。首先启动virtualenv
source venv/bin/activate
export SPARK_HOME={path_to_venv}/lib/python2.7/site-packages/pyspark
export PYSPARK_DRIVER_PYTHON=j
我正在尝试将“pyspark.sql.dataframe.dataframe”写入拼花地板文件
我的代码是-
from pyspark import sql
import json
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
from pyspark.sql imp
在pyspark脚本中,我首先对开始和结束位置进行集群,然后删除具有相同开始和结束位置的数据。我选择具有相同起始和结束cellid的数据,并将其startclusterid、endclusterid和left连接到数据集,然后取出不以相同起始和结束位置开始的数据
我通过以下命令多次运行此查询,每次都得到不同的结果
joined_data_filtered = spark.sql("SELECT T.TransactionId, T.CustomerId, T.StartClusterId, T.
我已经在安装Spyder IDE的本地windows计算机中安装了Anaconda3(64位)。我想将Spyder IDE连接到Cloudera Hadoop集群,这样我就可以在Spyder IDE中为远程Cloudera Hadoop集群编写PYSPARK脚本。连接到远程集群&从本地windows机器执行pyspark代码需要遵循哪些步骤
我有一个数据框,包含每日销售和每日点击的信息。在运行分析之前,我希望聚合数据。为了让我自己更清楚,我将尝试在一个示例数据帧上解释它
item_id date Price Sale Click Discount_code
2 01.03.2019 10 1 10 NULL
2 01.03.2019 8 1 10 Yes
2 02.03.2019
标签: Pyspark
databricksnearest-neighboreuclidean-distance
我试图通过在PySpark中对用户特征进行矢量化并按用户向量之间的距离进行排序来找到类似的用户。我在运行时5.5 LTS ML cluster(Scala 2.11,Spark 2.4.3)上的Databricks中运行这个
在中的代码之后,我使用了pyspark.ml.feature.BucketedRandomProjectionLSH模型中的approxSimilarityJoin()方法
我使用approxSimilarityJoin()成功地找到了类似的用户,但我偶尔会遇到一个感兴趣的
我已经使用AWS Glue Job(pySpark)设置了数据管道。作业由lambda函数触发,在执行relationalize之后,它将拼花文件写入日期分区。
有时,我正在重新处理同一日期分区,并希望在写入新文件之前删除以前写入的文件。有没有办法在作业中获取日期分区,以便可以首先删除以前写入的文件
我知道glue job会在某处维护日期分区,因为当我调用glueContext.write_dynamic_frame.from_options()时,它会正确地获取分区键。我需要知道作业当前在哪个
标签: Pyspark
pyspark-sqlpyspark-dataframes
所以我有两个数据帧,我想连接它们。第二个表中存储了逗号分隔的值,其中一个与表A中的列匹配。如何在Pyspark中使用它。下面是一个例子
表A有:
+-------+--------------------+
|deal_id| deal_name|
+-------+--------------------+
| 613760|ABCDEFGHI |
| 613740|TEST123 |
| 598946|OMG
通常情况下,我们需要在pyspark中导入一些额外的库,Databricks为实践pyspark提供了一个很好的环境,但是,是否可以在那里安装所需的库?如果是,如何进行
或者是否存在使用非内置库/包的变通方法
谢谢。根据箱子和包装类型,有多种方法。如果是PyPI包,那么最简单的方法就是使用
dbutils
dbutils.library.installPyPI(“pypipackage”,version=“version”,repo=“repo”,extras=“extras”)
也可以将库
尝试在列中使用simpleudf,我得到以下错误
实际上,订单号是一种字符串类型,它的值如下所示,并且没有空值
1234.345.344343434
代码:
order_udf = udf(lambda x: x[x.rfind(".") + 1:], StringType())
df.withColumn("order_number", order_udf('order_number')).show()
我需要更改udf调用中的某些内容吗?您可以不使用udf:(使用split和elemen
我是PySpark的新手,所以如果我的问题看起来太简单,我很抱歉,但我已经被它困扰了一段时间了
给定以下文本是并行的
爱丽丝最近为最近发生的事件而烦恼。爱丽丝注意到她的成绩在下降,这使爱丽丝很担心。如果爱丽丝的父母发现了这件事,他们会发疯的。爱丽丝该怎么办
我知道,要找到“Alice”这个词的频率,需要使用代码
rdd.filter(lambda x: "Alice" in x).count()
等于5。但是,如何排除“Alice's”的词,只获得“Alice”的单词计数,因此我所需的计数应该
标签: Pyspark
apache-spark-sqldata-manipulation
我正在研究大数据问题,数据框架是这样的。我的目标是创建此数据框架的两个聚合版本,以便从2015年至今的每个日期,结果统计该日期存在于面板中的用户数,以及前一年存在于面板中的用户数。除了计算每个日期的此类用户数,我还想总结一下这些用户在当前日期和一年前的日期花费的金额。由于我是新用户,所以在给定的日期x,如果join1,则称有用户存在于面板中,我不太明白如何将附加的图像作为表格嵌入到数据框中。很抱歉。您能试着花些时间来设置问题的格式吗?它不会花费5-10分钟的时间,并且会帮助所有的读者快速理解你的
我需要用时间戳命名输出文件,但出现错误。不确定我做错了什么
timestamp = spark.sql("select string(date_format(current_timestamp,'yyyy/MM/dd_HH:mm:ss'))").collect()[0][0]
print(timestamp)
如果使用当前日期而不是时间戳,则没有错误。但是我需要时间戳文件命名中不允许使用某些字符:
#L1234_ABC123_2020/06/05_13:14:01不是vaide。例如,尝试
讨论如何链接自定义PySpark 2转换
已将添加到PySpark 3 API中
此代码段显示了一个不带参数且按预期工作的自定义转换,以及另一个带参数但不工作的自定义转换
从pyspark.sql.functions导入col,lit
df=spark.createDataFrame([(1,1.0),(2,2.)],[“int”,“float”])
def与_有趣(单词):
def内部(df):
返回df.withColumn(“有趣”,亮(字))
返回内部
def cast_all_至_in
我正在python中使用ApacheSparkAPI,PySpark(--3.0.0版),理想情况下,我希望以分层的方式执行标记数据的交叉验证,因为我的数据高度不平衡!我目前正在使用以下模块
来自pyspark.ml.tuning导入交叉验证程序
在scikit中,可以通过定义一个StratifiedKFold并将其放置在任何网格搜索函数的cv参数中来了解这一点。这确保了给定估计器训练的每个K倍都以比例代表的方式包含标记数据
PySpark中是否有类似的版本
我很想问Spark团队的这个问题,
标签: Pyspark
pyspark-dataframespysftpspark-sftp
以上代码按此格式每行在csv文件中写入数据。(A)“B”和“C”)。但是,我希望将数据帧写成(A | | B | | C),其中空引号替换为“None”值
找到了一种不使用Spark SFTP包的方法,但无法了解如何使用Spark SFTP包并为空白列写入“无”
参考文档:您可以使用DataFramena函数将任何空值或Nan值替换为所需值
test_df.limit(10).repartition(1).write.format("com.springml.spark.sft
我有一个巨大的pyspark数据帧,其中包含段及其子段,如下所示:
SegmentId SubSegmentStart SubSegmentEnd
1 a1 a2
1 a2 a3
2 b1 b2
3 c1 c2
3 c3 c4
3
我试图使用pyspark访问嵌套列,但它似乎出现了一个奇怪的错误:
AttributeError:“函数”对象没有属性“年龄”
以下是df的模式:
root
|-- person: struct (nullable = true)
| |-- age: long (nullable = true)
| |-- name: string (nullable = true)
| |-- address: string (nullable = true)
我可以访问age的
我不清楚为什么有一个park.sql.functions.pandas_df()变量除了只接受一个pd.Series的迭代器外,还接受一个pd.Series迭代器。在什么情况下,我需要前者而不能同样很好地使用后者?这可能有助于了解性能@我知道这个链接,但我还是不明白为什么需要这个链接。
我试图在pyspark中连接两个数据帧,但无法在结果中显示第二个数据帧的列:
df_a.withColumn("loc", f.col("ORIGIN")).join(df_b.withColumn("loc", f.col("call2")), on="loc")\
.select([x for x in df_a.columns] + [x for x in df_b.columns])
如
我使用sklearn.svm.SVC进行二元分类。由于运行该模型花费了大量时间,因此我们希望使用pyspark进行分布式处理。pyspark的MLib有多大的线性风险。如何在pyspark中实现与sklearn中相同的模型?谢谢你的帮助
pyspark中的数据帧来自Bigquery中的一个视图,我在配置spark会话后导入该视图:
config = pyspark.SparkConf().setAll([('spark.executor.memory', '10g'),('spark.driver.memory', '30G'),\
('spark.jars.packages', 'com.google.cloud.spark:spark-bigquery-wit
我正在寻找在spark中实现嵌套循环的示例代码。我正在寻找以下功能
给定一个RDD data1=sc.parallelizerange10和另一个数据集data2=sc.parallelize['a','b','c'],我正在寻找一种方法,它将从数据2中选取每个“键”,从数据1中附加每个“值”,以创建一个键值对列表,这些键值对可能在内存中看起来像[a,1,a,2,a,3,…,c,8,c,9]然后使用一个简单的reducer函数按键进行reduce,比如lambda x,y:x+y
根据上述逻辑,
我的代码如下所示:
sc = SparkContext("local", "App Name")
eventRDD = sc.textFile("file:///home/cloudera/Desktop/python/event16.csv")
outRDDExt = eventRDD.filter(lambda s: "Topic" in s).map(lambda s: s.split('|'))
outRDDExt2 = outRDDExt.keyBy(lambda x: (x[1],x
我有一个Pyspark数据帧(原始数据帧),包含以下数据(所有列都有字符串数据类型):
我需要在value列中创建一个新的修改的数据框,并使用填充,以便此列的长度应为4个字符。如果长度小于4个字符,则在数据中添加0,如下所示:
id Value
1 0103
2 1504
3 0001
有人能帮我吗?如何使用Pyspark dataframe实现它?任何帮助都将不胜感激。您
是否可以在数据帧中执行动态“where/filter”?
我正在运行“like”操作来删除与特定字符串匹配的项
eventsDF.where(
~eventsDF.myColumn.like('FirstString%') &
~eventsDF.myColumn.like('anotherString%')
).count()
但是,我需要根据来自另一个数据帧/列表的字符串进行筛选
我想要的解决方案(实际上不起作用)涉及一个接收索引的函数
#my_func[0] =
我正在spark submit(spark 2.3.0)中运行以下代码,并获得“NameError:名称'sc'未定义”
在spark 2.3.0中,加载csv文件的正确方法是:
from pyspark.sql import SparkSession
# initiate spark instance
spark = SparkSession.builder
.master("local")
.appName("abc")
我们的组织最近将其基础设施从aws转移到了谷歌云计算,我认为dataproc集群是运行现有spark工作的一个很好的解决方案。但当谈到价格比较时,我也意识到我可以启动一个google kubernetes引擎集群并在其中安装spark来运行spark应用程序
现在我的问题是,如何在gke上运行spark“那么使用dataproc比较呢?在自动校准、定价和基础设施方面,哪一个是最好的选择。我已经阅读了谷歌关于gke和dataproc的文档,但是还没有足够的信息来确定使用gke或dataproc的优
标签: Pyspark
google-cloud-dataprocgraphframes
我正在用PySpark和GraphFrames(在googledataproc上运行)构建一个简单的网络图
然后,我尝试运行'label progation'
result = g.labelPropagation(maxIter=5)
但我得到了以下错误:
Py4JJavaError: An error occurred while calling o164.run.
: org.apache.spark.SparkException: Job aborted due to stage fa
标签: Pyspark
apache-spark-sqlpyspark-dataframes
我有一个主数据帧和一个辅助数据帧,我想逐行检查,根据每行中的值过滤主数据帧,在过滤后的主数据帧上运行一个函数,并保存输出
输出可以保存在单独的数据帧中,也可以保存在辅助数据帧的新列中
# Master DF
df = pd.DataFrame({"Name": ["Mike", "Bob", "Steve", "Jim", "Dan"], "Age": [22, 44, 66, 22, 66], "Job": ["Doc", "Cashier", "Fireman", "Doc", "Firem
我正在使用具有以下时间戳格式的数据集:yyyy-MM-dd-HH:MM:ss
当我将数据输出到csv时,格式更改如下:2019-04-29T00:15:00.000Z
有没有办法将其转换为原始格式,如:2019-04-29 00:15:00
我是否需要将该列转换为字符串,然后将其推送到csv
我是这样对csv说我的文件的:
df.coalesce(1).write.format("com.databricks.spark.csv"
标签: Pyspark
apache-spark-mllibkolmogorov-smirnov
是否有方法使用groupBy子句或某种聚合方法从pyspark中的spark.mllib库应用KS测试?
例如,我有一个数据帧df,其中列ID和RESULT如下:
+-------+------+
| ID|RESULT|
+-------+------+
|3648296| 2.73|
|3648296| 9.64|
|3648189| 0.03|
|3648189| 0.03|
|3648296| 2.51|
|3648189| 0.01|
|3648296| 1.75
我想根据条件从现有数据帧创建一个新的数据帧
df1=>
这里,如果df1中的id2按字母顺序大于k,则新数据帧df2应如下所示:
df2=>
使用F.when:
df.withColumn("id2", F.when(col("id2")>"k", 1).otherwise(0)).show()
+---+---+
标签: Pyspark
data-cleaningpyspark-dataframesdata-ingestion
从Oracle加载数据并写入PostgreSQL时,遇到了奇怪的问题。无法将带空格的字符串写入postgres。面临以下问题
Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO xyz("col1","col2") VALUES ('7643'::numeric,'xyz/xyz xyzxy xyz/xyz xyzxy ') was aborted: ERROR: inva
标签: Pyspark
azure-storageunzipzipfileazure-databricks
我想读取包含csv文件的zip文件。我试过很多方法,但都没有成功。在我的例子中,我应该在Azure Storage Explorer中读取文件的路径
例如,当我必须在DataRicks中读取csv时,我使用以下代码:
dfDemandaBilletesCmbinad = spark.read.csv("/mnt/data/myCSVfile.csv", header=True)
因此,我想要的Azure存储路径是“/mnt/data/myZipFile.zip”,其中包含一
我想在当地环境下做一份Pypark的工作
成功设置pipenv并安装模块(numpy)后,代码仍然看不到模块
使用pip而不是pipenv安装库是可行的。我错过了什么
终端输出如下所示
PS C:\Users\user\Desktop\spark\test> pipenv shell
Shell for C:\Users\user\.virtualenvs\test-sCQB0P3C already activated.
我有一个来自数据源的结构,其中结构字段有多种可能的数据类型,如下所示:
|-- priority: struct (nullable = true)
| |-- priority_a: struct (nullable = true)
| | |-- union: boolean (nullable = true)
| | |-- int32: integer (nullable = true)
| | |-- double: double (
标签: Pyspark
databricksazure-databricks
我正在Databricks笔记本(pyspark)中编码,并尝试使用dbutils获取特定Azure Data Lake gen2装载路径中所有子文件夹的文件计数和文件大小
我在一个特定的文件夹中为它编写了代码,但我一直在研究如何编写递归部分…这个怎么样
def deep_ls(路径:str):
“”“递归列出基本路径中的所有文件。”“”
对于dbutils.fs.ls(路径)中的x:
如果x.path[-1]不是“/”:
产量x
其他:
对于深槽中的y(x.path):
产量y
归功于
我想为dataframe中的列分配一个自动递增的唯一ID
如果column1值与column2值匹配,则值标志将被启用为true,对于所有这些匹配,我们需要分配相同的ID。如果column1值与column2值不匹配,则值标志将为False,我们需要为该column1值提供唯一的ID
输入测向
身份证件
专栏1
专栏2
旗帜
无效的
1.
2.
符合事实的
无效的
1.
3.
符合事实的
无效的
2.
1.
符合事实的
无效的
2.
3.
符合事实的
无效的
3.
1.
符合事实的
无效的
3.
我希望能够选择具有最佳参数的最佳拟合算法。
如何一次完成,而不为每个算法创建几个管道,也不在交叉验证中检查与特定算法无关的参数?
i、 e我想检查逻辑回归在随机森林中的表现。
我的代码是:
lr = LogisticRegression().setFamily("multinomial")
# Chain indexer and tree in a Pipeline
pipeline = Pipeline(stages=[labelIndexer,labelIndexer
我有一个RDD,它有2个分区和键值对数据作为值:
rdd5.glom().collect()
[[(u'hive',1),(u'python',1),(u'spark',1),(u'hive',1),
(u'spark',1),(u'python',1)],[(u'spark',1),(u'java',1),
(u'java',1),(u'spark',1)]]
当我执行aggregateByKey
rdd6=rdd5.aggregateByKey((0,0), lambda acc,val:
就这么简单,有可能将数据流传输到卡夫卡主题吗
我有Spark streaming的工作,负责所有的数据处理,现在我想把数据推到卡夫卡主题。在pyspark中可以这样做吗?最好在写入kafka之前转换为json,否则请指定要写入kafka的键和值列
query = jdf.selectExpr("to_json(struct(*)) AS value")\
.writeStream\
.format("kafka")\
.option("zookeeper.connect",
我有一个如下所示的数据框
+------------+------+
| food|pounds|
+------------+------+
| bacon| 4.0|
|STRAWBERRIES| 3.5|
| Bacon| 7.0|
|STRAWBERRIES| 3.0|
| BACON| 6.0|
|strawberries| 9.0|
|Strawberries| 1.0|
| pecans|
标签: Pyspark
azure-databricksdelta-lake
我的数据帧的每一行都有一个CSV内容
我努力将每一行保存在不同的特定表中
我相信我需要使用foreach或UDF来实现这一点,但这根本不起作用
我设法找到的所有内容就像foreach中的简单打印或使用.collect()编写的代码(我真的不想使用它)
我还找到了重新分区的方法,但这不允许我选择每一行的位置
rows = df.count()
df.repartition(rows).write.csv('save-dir')
你能给我一个简单而实用的例子吗?将每一行保存为一个表是一个代价高昂的
标签: Pyspark
pivotspark-streamingspark-structured-streamingpyspark-dataframes
我在pyspark结构化流媒体中接收流媒体数据,我需要对它们进行透视,以便我可以从该数据中获得一行数据
进入我的群集的数据结构是:
{
"version": 1.0.0,
"message": {
"data": [{
"name": "name_1",
"value": 1.0},
...
{
"name": "name_2",
"value": 2.0}]
}
}
我的代码如下:
dfStreaming = spark \
.r
google colab中的Py4JJavaError
Py4JJavaError回溯(最近一次调用)
在()
1.
---->2 df=spark.read.parquet(“gs://tata_2/activityObf.parquet”)
3帧
/获取返回值(应答、网关客户端、目标id、名称)中的usr/local/lib/python3.6/dist-packages/py4j/protocol.py
326 raise Py4JJavaError(
327“调用{0}{1}{2}时出错
标签: Pyspark
garbage-collectionimpala
我需要提取配置单元数据库(具有多个模式)中每个表的行数。我编写了pyspark作业,它提取每个表的计数,当我尝试一些模式时,它工作得很好,但是当我尝试所有模式时,它失败了,出现GV开销错误。我尝试为整个数据库中的所有表查询创建UNIONALL,也尝试为模式中的所有表创建UNIONALL。两者都失败了,出现了GC错误
你能建议避免这个错误吗。以下是我的脚本:
# For loop for Schema starts here
for schema in schemas_list:
# D
我正在尝试将数据仓库迁移到Delta lake。有一件事我很难弄清楚,那就是如何在spark会话之外连接到Delta Lake(银和金)表。我希望能够使用诸如Tableau之类的BI工具连接到这些表。我没有使用databricks,我想知道在hive metastore中存储这些表是否有帮助。如果不是这样的话,有人能帮助我用另一种方法吗?或者如果这是可行的。 你可以有一个蜂巢亚稳和一个带有火花源和Delta .IO开源服务器的节俭服务器,然后连接TabLao桌面。此时,databricks将是最
使用pyspark对约60k行的数据帧执行tfidf计算。
为每一行获取一个向量作为结果,以向量的形式包含所有分数
我想在一个数据帧中转换这些向量,使每个术语成为一列,然后每个后续行都有相应的tf idf分数
1 2 3 4 5 6 ...
下一页 最后一页 共 62 页