在本文中,我们将给您介绍关于如何在两行中将pyspark数据帧切片的详细内容,并且为您解答pyspark拼接dataframe的相关问题,此外,我们还将为您提供关于pyspark将大熊猫数据帧更改为p
在本文中,我们将给您介绍关于如何在两行中将pyspark数据帧切片的详细内容,并且为您解答pyspark 拼接dataframe的相关问题,此外,我们还将为您提供关于pyspark 将大熊猫数据帧更改为 pyspark 数据帧并写入 s3 出错、Pyspark替换Spark数据框列中的字符串、Pyspark:以表格格式显示Spark数据框、Pyspark:在 MySQL 表列中将数据帧存储为 JSON的知识。
本文目录一览:- 如何在两行中将pyspark数据帧切片(pyspark 拼接dataframe)
- pyspark 将大熊猫数据帧更改为 pyspark 数据帧并写入 s3 出错
- Pyspark替换Spark数据框列中的字符串
- Pyspark:以表格格式显示Spark数据框
- Pyspark:在 MySQL 表列中将数据帧存储为 JSON
如何在两行中将pyspark数据帧切片(pyspark 拼接dataframe)
我在Databricks工作。
我有一个包含500行的数据框,我想创建两个包含100行的数据框,另一个包含剩余的400行。
+--------------------+----------+| userid| eventdate|+--------------------+----------+|00518b128fc9459d9...|2017-10-09||00976c0b7f2c4c2ca...|2017-12-16||00a60fb81aa74f35a...|2017-12-04||00f9f7234e2c4bf78...|2017-05-09||0146fe6ad7a243c3b...|2017-11-21||016567f169c145ddb...|2017-10-16||01ccd278777946cb8...|2017-07-05|
我尝试了以下操作,但收到错误消息
df1 = df[:99]df2 = df[100:499]TypeError: unexpected item type: <type ''slice''>
答案1
小编典典最初,我误会了,并以为您想分割这些列。如果要选择行的子集,一种方法是使用创建索引列monotonically_increasing_id()
。从文档:
保证生成的ID是单调递增且唯一的,但不是连续的。
您可以使用此ID对数据框进行排序,并使用该ID对其子集进行排序,limit()
以确保准确获得所需的行。
例如:
import pyspark.sql.functions as fimport string# create a dummy df with 500 rows and 2 columnsN = 500numbers = [i%26 for i in range(N)]letters = [string.ascii_uppercase[n] for n in numbers]df = sqlCtx.createDataFrame( zip(numbers, letters), (''numbers'', ''letters''))# add an index columndf = df.withColumn(''index'', f.monotonically_increasing_id())# sort ascending and take first 100 rows for df1df1 = df.sort(''index'').limit(100)# sort descending and take 400 rows for df2df2 = df.sort(''index'', ascending=False).limit(400)
只是为了验证这是否符合您的要求:
df1.count()#100df2.count()#400
我们还可以验证索引列是否不重叠:
df1.select(f.min(''index'').alias(''min''), f.max(''index'').alias(''max'')).show()#+---+---+#|min|max|#+---+---+#| 0| 99|#+---+---+df2.select(f.min(''index'').alias(''min''), f.max(''index'').alias(''max'')).show()#+---+----------+#|min| max|#+---+----------+#|100|8589934841|#+---+----------+
pyspark 将大熊猫数据帧更改为 pyspark 数据帧并写入 s3 出错
如何解决pyspark 将大熊猫数据帧更改为 pyspark 数据帧并写入 s3 出错?
Spark 版本>2。 在尝试更改大型 Pandas 数据帧以触发数据帧并写入 s3 时,出现错误:
Serialized task 880:0 was 665971191 bytes,which exceeds max allowed: spark.rpc.message.maxSize (134217728 bytes). Consider increasing spark.rpc.message.maxSize or using broadcast variables for large values.
尝试重新分区增加分区,没有解决问题。
通读这个 Pyspark: Serialized task exceeds max allowed. Consider increasing spark.rpc.message.maxSize or using broadcast variables for large values
尝试了以下操作:
from pyspark.conf import SparkConf
from pyspark.sql import SparkSession
spark = (SparkSession.builder
.master("yarn")
.appName("myWork")
.config("spark.rpc.message.maxSize","1024mb")
.getorCreate())
还是有问题。 有什么建议吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Pyspark替换Spark数据框列中的字符串
我想通过替换子字符串对Spark Dataframe列执行一些基本的处理。最快的方法是什么?
在当前的用例中,我有一个要规范化的地址列表。例如,此数据框:
id address1 2 foo lane2 10 bar lane3 24 pants ln
会成为
id address1 2 foo ln2 10 bar ln3 24 pants ln
答案1
小编典典对于Spark
1.5或更高版本,可以使用功能包:
from pyspark.sql.functions import *newDf = df.withColumn(''address'', regexp_replace(''address'', ''lane'', ''ln''))
快速说明:
withColumn
调用该函数可在数据框中添加(或替换,如果名称存在)列。- 该函数
regexp_replace
将通过替换所有与模式匹配的子字符串来生成新列。
Pyspark:以表格格式显示Spark数据框
我正在使用pyspark读取拼花文件,如下所示:
my_df = sqlContext.read.parquet('hdfs://myPath/myDB.db/myTable/**')
然后,当我这样做时my_df.take(5)
,它将显示[Row(...)]
,而不是像我们使用pandas数据框时那样的表格式。
是否可以以表格格式(如熊猫数据框)显示数据框?谢谢!
Pyspark:在 MySQL 表列中将数据帧存储为 JSON
如何解决Pyspark:在 MySQL 表列中将数据帧存储为 JSON?
我有一个 spark 数据框,它需要以 JSON 格式存储在 MysqL 表中作为列值。 (以及它们各自列中的其他字符串类型值)
类似的东西:
第1列 | 第2列 |
---|---|
val 1 | [{"name":"Peter G","age":44,"city":"Quahog"},{"name":"John G"," age":30,{...},...] |
val 1 | [{"name":"Stewie G","age":3,{"name":"Ron G"," age":41,...] |
... | ... |
这里的 [{"name":"Peter G","age":30,...]
是存储为字典列表
我能做到:
str(dataframe_object.toJSON().collect())
然后将其存储到 MysqL 表列,但这意味着在将其存储到 MysqL 表之前将整个数据加载到内存中。是否有更好/最佳的方法来实现这一点,即不使用 collect()
?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
今天关于如何在两行中将pyspark数据帧切片和pyspark 拼接dataframe的分享就到这里,希望大家有所收获,若想了解更多关于pyspark 将大熊猫数据帧更改为 pyspark 数据帧并写入 s3 出错、Pyspark替换Spark数据框列中的字符串、Pyspark:以表格格式显示Spark数据框、Pyspark:在 MySQL 表列中将数据帧存储为 JSON等相关知识,可以在本站进行查询。
本文标签: