问题标签 [spark-koalas]

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 投票
0 回答
50 浏览

python - 修改列后Databricks pyspark AnalysisException

我有这个考拉数据框,它是其他两个数据框的合并。它有 4 列被重写为指定键上的组的最大值。如果另一列是否为空,还会得到一个值为 0 1 的新列。

但它给了我这个错误:

在这条线上:

或使用 NauticalData 作为 df 的所有其他行。偶数显示(NauticalData)

0 投票
2 回答
106 浏览

python - 用另一列的元素填充一列的 NA

我就是这种情况,我的df就是这样

我想应用这行代码: df['A'] = df['B'].fillna(df['A'])

我希望有这样的工作流程和最终输出:

但我收到此错误:

TypeError: Unsupported type Series

可能是因为每次有一个 NA 时,它都会尝试用整个系列而不是 B 列具有相同索引的单个元素来填充它。

我收到与这样的语法相同的错误: df['C'] = df['B'].fillna(df['A']) 所以问题似乎不在于我首先用 B 的值更改 A 的值,然后尝试用 a 的值填充“B”NA在技​​术上与 B 相同的列

我在数据砖环境中,我正在使用考拉数据框,但它们像熊猫一样工作。你能帮助我吗?

0 投票
1 回答
171 浏览

python - 过滤考拉数据框中的索引值

我正在尝试在 kolas 中重新创建以下操作,在 pandas 中,当我在 koalas 中尝试相同的操作时,它会引发错误。

在 Pandas 中尝试的操作:

输出:

富吧 1 b 2 4 e 5

在考拉尝试的操作:

输出: PandasNotImplementedError:该方法pd.Index.__iter__()未实现。如果要将数据收集为 NumPy 数组,请改用“to_numpy()”。

0 投票
1 回答
1568 浏览

apache-spark - Koalas / pyspark 找不到数据源:delta

当我尝试在本地使用 koalas.DataFrame.to_delta() 将 Koalas DataFrame 直接写入 delta 表时,我得到以下 Pyspark 异常:
java.lang.ClassNotFoundException: Failed to find data source: delta
编辑:忽略下面,直接调用 Pyspark 也会出现问题。

如果我将 Koalas DataFrame 转换为 Spark DataFrame 然后写入 delta,我似乎没有问题。是否有 Koalas 不知道但 Pyspark 知道的底层库?似乎很奇怪,因为我认为在后台使用了相同的 Pyspark 模块......我应该注意 Koalas to_delta() 方法似乎确实适用于 Databricks,这表明我的本地设置缺少与 Delta 相关的库.

失败的考拉代码:

编辑:不工作考拉火花到三角洲代码:

另外,Koalas 和 Spark 如何保存到 delta 表之间有什么区别需要注意吗?我有一个相当大的增量表,到目前为止,它一直是使用 Koalas(在 Databricks 上)写入的,但我可能会切换到 spark.write 以使本地测试更容易。在我这样做之前,我想确保两种方法的结果是相同的(我会做一些测试来确认这一点,只是好奇是否有人对切换现有增量表的写入策略有任何其他说明)。

编辑:好的,我猜 Pyspark 实际上也没有保存 delta 表,我忘了将 .save() 添加到 Pyspark .write 调用中,就像一个哑巴一样。所以我想我现在真正的问题是如何在本地运行 Pyspark 时包含 Delta 库/jar,特别是当我在 Pycharm 中运行单元测试时?

0 投票
1 回答
149 浏览

python - 使用 Koalas 将 dict 列表转换为 DataFrame

我试图将 dicts 列表转换为 Databricks 的 Koalas DataFrame,但我不断收到错误消息:

ArrowInvalid:不能混合列表和非列表、非空值

Pandas 完美运行(使用 pd.DataFrame(list)),但由于公司限制,我必须使用 PySpark/Koalas。我还尝试将列表转换为字典,但错误仍然存​​在。

列表示例:

字典就像:

是否可以从中获取 DataFrame ?谢谢

0 投票
1 回答
274 浏览

python - PandasNotImplementedError:方法 `pd.Series.__iter__()` 未实现。如果您想将数据收集为 NumPy 数组

我尝试在 Koalas dataframe 中创建一个新列df。数据框有 2 列:col1col2. 我需要创建一个新列newcol作为col1col2值的中位数。

但我收到以下错误:

PandasNotImplementedError:该方法pd.Series.__iter__()未实现。如果要将数据收集为 NumPy 数组,请改用“to_numpy()”。

我也试过:

但它没有用。

0 投票
2 回答
177 浏览

apache-spark - spark数据框和考拉数据框有什么区别?

我试图了解考拉的内部运作。我使用的每个教程都向我展示了三个概念

  1. 火花数据框
  2. 内部框架
  3. 考拉数据框

据我了解,spark dataframe是典型的分布式spark dataframe。现在,这个 spark 数据框需要以 pandas 数据框的形式呈现,以使概念更加清晰,这就是内部框架概念的来源。内部框架保留了诸如 spark 列名 --> pandas 列名和有关信息的映射。指数等

让这张图帮助我们理解: 在此处输入图像描述

看起来 koalas 数据帧只是一个逻辑概念,人们可以将其理解为 spark 数据帧的解析输出,内部帧提供解析器。它是 spark 数据帧的抽象层,有助于使 spark 数据帧适合 koalas API(熊猫风格)

对 koalas 数据帧的每个 API 调用都会创建一个新的内部帧,并且会创建或不创建新的 spark 数据帧。

但是,我也看到了这样的图像:

在此处输入图像描述

这就是我的困惑所在。创建或不创建新的考拉数据框是什么意思?考拉数据框到底是什么?以第一张图片的具体示例为例,在应用诸如此类的操作时,在更改内部框架和 spark 数据帧的同时保持考拉数据帧相同是什么意思kdf.dropna(...,inplace=True)

0 投票
0 回答
10 浏览

jupyter-notebook - 为什么 CPU 时间和 Wall time 之间存在巨大差异

数据科学新手,使用考拉和 Spark 框架。所以问题来了。

我从 s3 文件以镶木地板格式加载初始考拉数据框。我也将 default_index 设置为distributed索引,并确认底层 rdd 分区的数量超过 300。

当我调用形状函数来检查行数和列数时,需要以下时间

我的问题是为什么 cpu 时间和墙时间之间存在如此显着的差异。对于底层的火花执行器,不应该直接计算行数。我希望数据不需要在不同的分区之间进行混洗,因此 cpu 时间和 wall 时间不应该有太大的差异。如果我错了,请纠正我。

0 投票
0 回答
173 浏览

apache-spark - 考拉中不同类型的默认索引选择

我需要一些帮助来理解koalas 中不同类型的默认索引选择。我将在此处粘贴提供的定义的数据块,问题将随之而来。我无法完全理解三种可用默认值之间的区别。如果您能抽出一些时间帮助我理解这个概念,我将不胜感激。

序列类型- 目前考拉默认使用“序列”类型,因为它保证索引连续递增,就像熊猫一样。但是,它在内部使用了非分区窗口函数,这意味着需要将所有数据收集到单个节点中。如果节点没有足够的内存,性能会明显下降,或者出现OutOfMemoryError。

问题:

  1. 为什么在这种情况下需要在一个节点上收集数据?

分布式序列类型- 当使用“分布式序列”索引时,性能损失不如“序列”类型显着。它以分布式方式计算和生成索引,但它需要另一个额外的 Spark 作业来在内部生成全局序列。它也不保证结果的自然顺序。一般来说,它会成为一个不断增加的数字

问题:

  1. 通过选择分布式序列类型而不是序列类型,我放弃了什么功能?
  2. 1 如何导致显着降低性能损失?

分布式类型——“分布式”索引几乎没有性能损失,并且总是创建单调递增的数字。如果只需要索引作为每行的唯一编号或行的顺序,则此索引类型将是最佳选择。然而,这些数字有一个不确定的差距。这意味着此索引类型不太可能用作组合两个以上 DataFrame 或 Series 的操作的索引。

问题:

  1. 为什么这是最轻的实现火花?
  2. spark如何在这种类型的索引中保持递增的顺序?
0 投票
0 回答
15 浏览

data-analysis - 如何加快考拉的头部函数执行时间?

对于大型数据集,koalas.head(n)函数需要很长时间。我知道它试图带回驱动程序节点中的所有数据,然后呈现绝对前 n 行。

有没有什么快速的方法来分析考拉中的前 n 行,以便只涉及单个或几个分区来获得预期的结果?我不想看到绝对的前 n 行,它们可以随机分布在不同的执行程序节点上,甚至位于同一个分区中。