相关疑难解决方法(0)

如何转动DataFrame?

我开始使用Spark DataFrames,我需要能够透过数据来创建多列的1列中的多列.在Scalding中有内置的功能,我相信Python中的Pandas,但我找不到任何新的Spark Dataframe.

我假设我可以编写某种类型的自定义函数,但是我甚至不确定如何启动,特别是因为我是Spark的新手.我有人知道如何使用内置功能或如何在Scala中编写内容的建议,非常感谢.

pivot scala dataframe apache-spark apache-spark-sql

52
推荐指数
5
解决办法
4万
查看次数

使用Spark将列转换为行

我正在尝试将我的表的某些列转换为行.我正在使用Python和Spark 1.5.0.这是我的初始表:

+-----+-----+-----+-------+
|  A  |col_1|col_2|col_...|
+-----+-------------------+
|  1  |  0.0|  0.6|  ...  |
|  2  |  0.6|  0.7|  ...  |
|  3  |  0.5|  0.9|  ...  |
|  ...|  ...|  ...|  ...  |
Run Code Online (Sandbox Code Playgroud)

我想有这样的事情:

+-----+--------+-----------+
|  A  | col_id | col_value |
+-----+--------+-----------+
|  1  |   col_1|        0.0|
|  1  |   col_2|        0.6|   
|  ...|     ...|        ...|    
|  2  |   col_1|        0.6|
|  2  |   col_2|        0.7| 
|  ...|     ...|        ...|  
|  3  |   col_1|        0.5|
|  3  | …
Run Code Online (Sandbox Code Playgroud)

python transpose pivot apache-spark

26
推荐指数
4
解决办法
3万
查看次数

在spark-sql/pyspark中取消透视

我手头有一个问题声明,我想在spark-sql/pyspark中取消对表的删除.我已经阅读了文档,我可以看到只支持pivot,但到目前为止还没有支持un-pivot.有没有办法实现这个目标?

让我的初始表看起来像这样:

让我的初始表看起来像这样

当我使用下面提到的命令在pyspark中进行调整时:

df.groupBy("A").pivot("B").sum("C")
Run Code Online (Sandbox Code Playgroud)

我把它作为输出:

在数据透视表看起来像这样

现在我想取消转动的表格.通常,此操作可能会/可能不会根据我转动原始表的方式产生原始表.

到目前为止,Spark-sql并不提供对unpivot的开箱即用支持.有没有办法实现这个目标?

unpivot apache-spark apache-spark-sql pyspark

13
推荐指数
2
解决办法
1万
查看次数

PySpark Dataframe 将列融合为行

正如主题所描述的,我有一个 PySpark 数据框,我需要将三列融合成行。每列基本上代表一个类别中的一个事实。最终目标是将数据聚合到每个类别的单个总数中。

这个数据帧中有数千万行,所以我需要一种方法来在 Spark 集群上进行转换而不将任何数据带回驱动程序(在这种情况下为 Jupyter)。

这是我的几个商店的数据框的摘录: +-----------+----------------+-----------------+----------------+ | store_id |qty_on_hand_milk|qty_on_hand_bread|qty_on_hand_eggs| +-----------+----------------+-----------------+----------------+ | 100| 30| 105| 35| | 200| 55| 85| 65| | 300| 20| 125| 90| +-----------+----------------+-----------------+----------------+

这是所需的结果数据帧,每个商店多行,其中原始数据帧的列已融合到新数据帧的行中,每个原始列在新类别列中占一行: +-----------+--------+-----------+ | product_id|CATEGORY|qty_on_hand| +-----------+--------+-----------+ | 100| milk| 30| | 100| bread| 105| | 100| eggs| 35| | 200| milk| 55| | 200| bread| 85| | 200| eggs| 65| | 300| milk| 20| | 300| bread| 125| | 300| eggs| 90| +-----------+--------+-----------+

最终,我想聚合结果数据框以获得每个类别的总数: +--------+-----------------+ |CATEGORY|total_qty_on_hand| +--------+-----------------+ | milk| 105| | bread| …

python aggregate dataframe melt pyspark

5
推荐指数
2
解决办法
8400
查看次数

Spark支持融化和dcast

我们使用melt和dcast来转换宽 - >长 - 长 - >宽格式的数据.有关详细信息,请参阅http://seananderson.ca/2013/10/19/reshape.html.

scala或SparkR都可以.

我已经浏览了这个博客scala函数以及R API.我没有看到做类似工作的功能.

Spark中有任何等效功能吗?如果没有,在Spark中有没有其他方法可以做到这一点?

scala r melt apache-spark spark-dataframe

4
推荐指数
1
解决办法
2504
查看次数

聚集在闪闪发光的

我正在使用 sparklyr 来操作一些数据。给定一个,

a<-tibble(id = rep(c(1,10), each = 10),
          attribute1 = rep(c("This", "That", 'These', 'Those', "The", "Other", "Test", "End", "Start", 'Beginning'), 2),
          value = rep(seq(10,100, by = 10),2),
          average = rep(c(50,100),each = 10),
          upper_bound = rep(c(80, 130), each =10),
          lower_bound = rep(c(20, 70), each =10))
Run Code Online (Sandbox Code Playgroud)

我想使用“收集”来操作数据,如下所示:

b<- a %>% 
     gather(key = type_data, value = value_data, -c(id:attribute1))
Run Code Online (Sandbox Code Playgroud)

但是,“收集”在 sparklyr 上不可用。我见过一些人使用 sdf_pivot 来模仿“收集”(例如,如何在 sparklyr 中使用 sdf_pivot() 并连接字符串?)但我看不出在这种情况下如何使用它。

有没有人有想法?

干杯!

r dplyr apache-spark sparklyr

3
推荐指数
2
解决办法
2023
查看次数

R SparkR - 相当于熔体函数

是否有类似于meltSparkR 库中的功能?

将 1 行 50 列的数据转换为 50 行 3 列?

r reshape2 apache-spark sparkr

2
推荐指数
1
解决办法
746
查看次数

Pyspark - 将多列数据组合成跨行分布的单列

我有一个多列的 pyspark 数据框,如下所示:

name    col1    col2    col3
A        1        6       7
B        2        7       6
C        3        8       5
D        4        9       4
E        5        8       3
Run Code Online (Sandbox Code Playgroud)

我想通过将 col1、col2、col3 的列名和列值组合成两个新列,例如 new_col 和 new_col_val,跨行创建一个新的数据框:

在此处输入图片说明

我使用以下代码在 R 中做了同样的事情:

df1 <- gather(df,new_col,new_col_val,-name)
Run Code Online (Sandbox Code Playgroud)

我想创建 3 个单独的数据帧,它们将包含原始数据帧中的每一列,然后将它们附加在一起,但我的数据有超过 2500k 行和大约 60 列。创建多个数据框将是最糟糕的主意。谁能告诉我如何在 pyspark 中执行此操作?

python apache-spark pyspark

2
推荐指数
1
解决办法
1974
查看次数

pyspark 数据框中每列的最大字符串长度

我正在 databricks 中尝试这个。请让我知道需要导入的 pyspark 库以及在 Azure databricks pyspark 中获取以下输出的代码

示例:- 输入数据框:-

|     column1     |    column2    | column3  |  column4  |

| a               | bbbbb         | cc       | >dddddddd |
| >aaaaaaaaaaaaaa | bb            | c        | dddd      |
| aa              | >bbbbbbbbbbbb | >ccccccc | ddddd     |
| aaaaa           | bbbb          | ccc      | d         |
Run Code Online (Sandbox Code Playgroud)

输出数据帧:-

| column  | maxLength |

| column1 |        14 |
| column2 |        12 |
| column3 |         7 |
| column4 | …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql pyspark azure-databricks

1
推荐指数
1
解决办法
1万
查看次数