GVKun编程网logo

如何在两行中将pyspark数据帧切片(pyspark 拼接dataframe)

29

在本文中,我们将给您介绍关于如何在两行中将pyspark数据帧切片的详细内容,并且为您解答pyspark拼接dataframe的相关问题,此外,我们还将为您提供关于pyspark将大熊猫数据帧更改为p

在本文中,我们将给您介绍关于如何在两行中将pyspark数据帧切片的详细内容,并且为您解答pyspark 拼接dataframe的相关问题,此外,我们还将为您提供关于pyspark 将大熊猫数据帧更改为 pyspark 数据帧并写入 s3 出错、Pyspark替换Spark数据框列中的字符串、Pyspark:以表格格式显示Spark数据框、Pyspark:在 MySQL 表列中将数据帧存储为 JSON的知识。

本文目录一览:

如何在两行中将pyspark数据帧切片(pyspark 拼接dataframe)

如何在两行中将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 出错

如何解决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数据框列中的字符串

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:以表格格式显示Spark数据框

我正在使用pyspark读取拼花文件,如下所示:

my_df = sqlContext.read.parquet('hdfs://myPath/myDB.db/myTable/**')

然后,当我这样做时my_df.take(5),它将显示[Row(...)],而不是像我们使用pandas数据框时那样的表格式。

是否可以以表格格式(如熊猫数据框)显示数据框?谢谢!

Pyspark:在 MySQL 表列中将数据帧存储为 JSON

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等相关知识,可以在本站进行查询。

本文标签: