我在代码仓库中看到了 ctx 的使用,这到底是什么?它是内置库吗?我什么时候会使用它?
我在以下示例中看到过它:
df = ctx.spark.createdataframe(...
Run Code Online (Sandbox Code Playgroud) 数据框应该具有category基于一组固定规则的列。规则集变得相当大。
有没有办法使用元组列表(参见下面的示例)来动态链接条件when以达到与底部硬编码解决方案相同的结果。
# Potential list of rule definitions
category_rules = [
('A', 8, 'small'),
('A', 30, 'large'),
('B', 5, 'small'),
# Group, size smaller value --> Category
# and so on ... e.g.,
]
Run Code Online (Sandbox Code Playgroud)
这是一个可重复性的玩具示例。由组和 ID 组成的数据框应添加列category,这取决于group列的内容。规则列表如上一节所示。
data = [('A', '45345', 5), ('C', '55345', 5), ('A', '35345', 10), ('B', '65345', 4)]
df = spark.createDataFrame(data, ['group', 'id', 'size'])
Run Code Online (Sandbox Code Playgroud)
+-----+-----+-----+
|group| id| size|
+-----+-----+-----+
| A|45345| 5|
| C|55345| 5| …Run Code Online (Sandbox Code Playgroud) 我有一个数据工程程序,它从联邦政府网站上获取一些数据并转换这些数据。我对是否需要使用“self”关键字或者根本不使用类是否更好的做法感到有些困惑。这是它目前的组织方式:
class GetGovtData():
def get_data_1(arg1=0, arg2=1):
df = conduct_some_operations
return df
def get_data_2(arg1=4, arg2=5):
df = conduct_some_operations_two
return df
Run Code Online (Sandbox Code Playgroud)
我主要在这里使用一个类来进行组织。例如,我可能需要使用一个类中的十几种不同方法。我发现输入这个更美观/更容易:
from data.get_govt_data import GetGovtData
df1 = GetGovtData.get_data_1()
df2 = GetGovtData.get_data_2()
Run Code Online (Sandbox Code Playgroud)
而不是:
from data import get_govt_data
df1 = get_govt_data.get_data_1()
df2 = get_govt_data.get_data_2()
Run Code Online (Sandbox Code Playgroud)
其中只有一大堆下划线。所以我很好奇使用这样的类是否会被认为是糟糕的代码,而不用担心“自我”?或者我应该消除这些类并在我的文件中使用一堆函数?