问题标签 [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.
python - 修改列后Databricks pyspark AnalysisException
我有这个考拉数据框,它是其他两个数据框的合并。它有 4 列被重写为指定键上的组的最大值。如果另一列是否为空,还会得到一个值为 0 1 的新列。
但它给了我这个错误:
在这条线上:
或使用 NauticalData 作为 df 的所有其他行。偶数显示(NauticalData)
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 相同的列
我在数据砖环境中,我正在使用考拉数据框,但它们像熊猫一样工作。你能帮助我吗?
python - 过滤考拉数据框中的索引值
我正在尝试在 kolas 中重新创建以下操作,在 pandas 中,当我在 koalas 中尝试相同的操作时,它会引发错误。
在 Pandas 中尝试的操作:
输出:
富吧 1 b 2 4 e 5
在考拉尝试的操作:
输出:
PandasNotImplementedError:该方法pd.Index.__iter__()
未实现。如果要将数据收集为 NumPy 数组,请改用“to_numpy()”。
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 中运行单元测试时?
python - 使用 Koalas 将 dict 列表转换为 DataFrame
我试图将 dicts 列表转换为 Databricks 的 Koalas DataFrame,但我不断收到错误消息:
ArrowInvalid:不能混合列表和非列表、非空值
Pandas 完美运行(使用 pd.DataFrame(list)),但由于公司限制,我必须使用 PySpark/Koalas。我还尝试将列表转换为字典,但错误仍然存在。
列表示例:
字典就像:
是否可以从中获取 DataFrame ?谢谢
python - PandasNotImplementedError:方法 `pd.Series.__iter__()` 未实现。如果您想将数据收集为 NumPy 数组
我尝试在 Koalas dataframe 中创建一个新列df
。数据框有 2 列:col1
和col2
. 我需要创建一个新列newcol
作为col1
和col2
值的中位数。
但我收到以下错误:
PandasNotImplementedError:该方法
pd.Series.__iter__()
未实现。如果要将数据收集为 NumPy 数组,请改用“to_numpy()”。
我也试过:
但它没有用。
apache-spark - spark数据框和考拉数据框有什么区别?
我试图了解考拉的内部运作。我使用的每个教程都向我展示了三个概念
- 火花数据框
- 内部框架
- 考拉数据框
据我了解,spark dataframe是典型的分布式spark dataframe。现在,这个 spark 数据框需要以 pandas 数据框的形式呈现,以使概念更加清晰,这就是内部框架概念的来源。内部框架保留了诸如 spark 列名 --> pandas 列名和有关信息的映射。指数等
看起来 koalas 数据帧只是一个逻辑概念,人们可以将其理解为 spark 数据帧的解析输出,内部帧提供解析器。它是 spark 数据帧的抽象层,有助于使 spark 数据帧适合 koalas API(熊猫风格)
对 koalas 数据帧的每个 API 调用都会创建一个新的内部帧,并且会创建或不创建新的 spark 数据帧。
但是,我也看到了这样的图像:
这就是我的困惑所在。创建或不创建新的考拉数据框是什么意思?考拉数据框到底是什么?以第一张图片的具体示例为例,在应用诸如此类的操作时,在更改内部框架和 spark 数据帧的同时保持考拉数据帧相同是什么意思kdf.dropna(...,inplace=True)
?
jupyter-notebook - 为什么 CPU 时间和 Wall time 之间存在巨大差异
数据科学新手,使用考拉和 Spark 框架。所以问题来了。
我从 s3 文件以镶木地板格式加载初始考拉数据框。我也将 default_index 设置为distributed
索引,并确认底层 rdd 分区的数量超过 300。
当我调用形状函数来检查行数和列数时,需要以下时间
我的问题是为什么 cpu 时间和墙时间之间存在如此显着的差异。对于底层的火花执行器,不应该直接计算行数。我希望数据不需要在不同的分区之间进行混洗,因此 cpu 时间和 wall 时间不应该有太大的差异。如果我错了,请纠正我。
apache-spark - 考拉中不同类型的默认索引选择
我需要一些帮助来理解koalas 中不同类型的默认索引选择。我将在此处粘贴提供的定义的数据块,问题将随之而来。我无法完全理解三种可用默认值之间的区别。如果您能抽出一些时间帮助我理解这个概念,我将不胜感激。
序列类型- 目前考拉默认使用“序列”类型,因为它保证索引连续递增,就像熊猫一样。但是,它在内部使用了非分区窗口函数,这意味着需要将所有数据收集到单个节点中。如果节点没有足够的内存,性能会明显下降,或者出现OutOfMemoryError。
问题:
- 为什么在这种情况下需要在一个节点上收集数据?
分布式序列类型- 当使用“分布式序列”索引时,性能损失不如“序列”类型显着。它以分布式方式计算和生成索引,但它需要另一个额外的 Spark 作业来在内部生成全局序列。它也不保证结果的自然顺序。一般来说,它会成为一个不断增加的数字
问题:
- 通过选择分布式序列类型而不是序列类型,我放弃了什么功能?
- 1 如何导致显着降低性能损失?
分布式类型——“分布式”索引几乎没有性能损失,并且总是创建单调递增的数字。如果只需要索引作为每行的唯一编号或行的顺序,则此索引类型将是最佳选择。然而,这些数字有一个不确定的差距。这意味着此索引类型不太可能用作组合两个以上 DataFrame 或 Series 的操作的索引。
问题:
- 为什么这是最轻的实现火花?
- spark如何在这种类型的索引中保持递增的顺序?
data-analysis - 如何加快考拉的头部函数执行时间?
对于大型数据集,koalas.head(n)
函数需要很长时间。我知道它试图带回驱动程序节点中的所有数据,然后呈现绝对前 n 行。
有没有什么快速的方法来分析考拉中的前 n 行,以便只涉及单个或几个分区来获得预期的结果?我不想看到绝对的前 n 行,它们可以随机分布在不同的执行程序节点上,甚至位于同一个分区中。