问题标签 [pyspark-dataframes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
418 浏览

python - TypeError:&:'str'和'method'不支持的操作数类型

我正在使用 spark dataframe api 操作转换 hive sql。其中一个用例需要验证字符串列是否为空白和 NULL。

我写了下面的代码来满足要求

这个检查给了我错误。我怎样才能满足这个条件?

0 投票
2 回答
377 浏览

apache-spark - 清理 pyspark 数据框中的列值

给定 CSV 文件,我使用如下代码转换为 Dataframe。

创建的数据框看起来像这样:

我想将此列转换为仅包含数字。最终结果应该类似于 wherehimeare removed:

我想清理这些值并确保它只包含数字。但我不确定在 Spark 中是否可行。

0 投票
1 回答
754 浏览

apache-spark - PySpark 和时间序列数据:如何巧妙地避免日期重叠?

我有以下示例 Spark 数据框

这导致

这表示每个服务器的使用日期范围。我想将其转换为不重叠日期的时间序列。

我想在不使用 UDF的情况下实现这一点。

这就是我现在正在做的,这是错误的

这使

我想达到的最终结果如下

所以对于server_id484,我有实际的开始和结束日期,中间没有任何噪音。

您对如何在不使用 UDF 的情况下实现这一目标有任何建议吗?

谢谢

0 投票
1 回答
951 浏览

apache-spark - 在一个数据框中获取两列之间的 Jaccard 相似度

我想计算两列的 Jaccard 相似度,但我认为 PySpark 中没有这样的函数。我不确定计算它的最佳方法是什么。

例如,假设我们有 1 个如下所示的数据框:

这些列都是字符串类型,最终结果应如下所示:

我写了一个这样的udf,但它不起作用。我对 Spark 还是很陌生,所以它必须被打破。我对任何解决方案持开放态度,只要它能准确计算 1 个数据帧中 2 列的 Jaccard sim。

0 投票
1 回答
63 浏览

pyspark - substring 函数返回列类型而不是值。有没有办法从 pyspark 中的列类型中获取值

我正在使用 substring 函数将条件与我的应用程序中的 pyspark join 进行比较。此函数返回列类型而不是值。

尝试使用 expr 但仍然得到相同的列类型结果

我想将来自子字符串的值与另一个数据框列的值进行比较。两者都是字符串类型

pyspark:

让我们说col1 = 'abcdefghijklmno'

substring 函数的预期输出应mno基于上述定义。

0 投票
1 回答
977 浏览

python - 如何在pyspark中连接列的值

我有一个数据框。列“名称”包含列标题,应连接哪些值。我想用 pyspark concat_ws() 来做,但没有任何效果。我必须用 concat_ws() 函数解决它,没有熊猫等。

我得到的最好的是连接标题,但不是此列中的值。我无法从函数返回列表以在 concat_ws() 中解压它

0 投票
2 回答
447 浏览

pyspark - 如何循环遍历数据框并将数组添加到每一行

我需要遍历 pyspark 数据框并以活动月份数爆破每一行。我主要关心的是当我尝试将数据放入配置单元时的内存管理以及该过程中消耗的时间。

我使用了 collect ,"idx", F.monotonically_increasing_id() 但这已经杀死了我的代码的性能。

输入

输出

0 投票
0 回答
483 浏览

python - Spark-submit 抛出 GC 内存不足异常

我是新来的火花。我们有下面的配置单元查询,在它之上,我们正在使用 spark 和 python 执行枢轴操作。

下面的 pyspark 脚本执行一些枢轴操作并写入配置单元表。Hive 查询返回 1.4 亿行。

方法一

当我使用 spark-submit 命令运行上述脚本时,我最终得到

java.lang.OutOfMemoryError:Java 堆空间

或有时

java.lang.OutOfMemoryError:超出 GC 开销限制

我使用的 spark-submit 命令。

详细日志:

我对上面的 pyspark 脚本做了一些小改动,并且没有任何问题

方法二

但是上面的脚本涉及到中间表的创建,这是一个额外的步骤。在方法 2 中,当我使用相同的 spark-submit 命令保留限制关键字时,它可以正常工作。

我的方法1有什么问题,我怎样才能使它起作用?

注意:我遵循了Spark java.lang.OutOfMemoryError: Java heap space并尝试了所有建议的 conf 参数,但仍然没有运气。

0 投票
3 回答
6556 浏览

apache-spark - 将 JSON 字符串列拆分为多个列

我正在寻找一种通用的解决方案来从 JSON 字符串列中提取所有 json 字段作为列。

'path' 中文件的文件格式是 parquet

样本数据

预期产出

我知道我可以通过创建一个定义了架构的 StructType 并使用“from_json”方法来提取列。

但是这种方法需要手动定义模式。

有没有更好的方法来展平 JSON 列而不手动定义架构?在提供的示例中,我可以看到可用的 JSON 字段。但实际上,我无法遍历所有行来查找所有字段。

所以我正在寻找一种解决方案,将所有字段拆分为列,而不指定列的名称或类型。

0 投票
0 回答
64 浏览

apache-spark - Pyspark 的 repartition() (Dataframe API) 的奇怪行为

假设我有以下 Pyspark 数据框:

我可以展示它:

现在,我要求重新分区:

据我了解,这将创建 2 个分区,即根据第一列的值分布的数据。

不过,如果我打印分区数和分区结构,结果如下:

如您所见,有 2 个分区,没关系,但数据并没有像我预期的那样分区:所有数据都在一个分区内,而另一个是空的。

更奇怪的是,如果我要求 3 个分区:

即,我得到了一个空分区和 2 个具有预期数据分布的其他分区。

难道我做错了什么?任何人都可以解释这种行为吗?

谢谢!

编辑 1

特别好奇!0如果我将第一列中所有出现的 替换为2,一切都会按我的预期进行!

显示它:

然后要求重新分区并检查分区:

值有什么问题0?xD

这是一个错误吗?