gpt4 book ai didi

python - 检查类型 : How to check if something is a RDD or a DataFrame?

转载 作者:太空狗 更新时间:2023-10-30 01:50:35 24 4
gpt4 key购买 nike

我正在使用 Python,这是一个 Spark RDD/DataFrame。

我尝试了 isinstance(thing, RDD)RDD 没有被识别。

我需要这样做的原因:

我正在编写一个可以传入 RDDDataFrame 的函数,所以我需要执行 input.rdd如果传入 DataFrame,则获取底层 RDD。

最佳答案

isinstance 将正常工作:

from pyspark.sql import DataFrame
from pyspark.rdd import RDD

def foo(x):
if isinstance(x, RDD):
return "RDD"
if isinstance(x, DataFrame):
return "DataFrame"

foo(sc.parallelize([]))
## 'RDD'
foo(sc.parallelize([("foo", 1)]).toDF())
## 'DataFrame'

但单一调度是更优雅的方法:

from functools import singledispatch

@singledispatch
def bar(x):
pass

@bar.register(RDD)
def _(arg):
return "RDD"

@bar.register(DataFrame)
def _(arg):
return "DataFrame"

bar(sc.parallelize([]))
## 'RDD'

bar(sc.parallelize([("foo", 1)]).toDF())
## 'DataFrame'

如果您不介意额外的依赖项 multipledispatch也是一个有趣的选项:

from multipledispatch import dispatch

@dispatch(RDD)
def baz(x):
return "RDD"

@dispatch(DataFrame)
def baz(x):
return "DataFrame"

baz(sc.parallelize([]))
## 'RDD'

baz(sc.parallelize([("foo", 1)]).toDF())
## 'DataFrame'

最后,最 Pythonic 的方法是简单地检查一个接口(interface):

def foobar(x):
if hasattr(x, "rdd"):
## It is a DataFrame
else:
## It (probably) is a RDD

关于python - 检查类型 : How to check if something is a RDD or a DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36731365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com