假设我有一个 AWS 集群,其中包含 1 个主节点实例、5 个核心节点实例和任务节点,最多可自动扩展至 16 个实例。每个主/任务/核心节点具有以下配置:
Master Node : 16Vcore , 128 GB Memory, 600 SSD GB storage
Each Core Node : 4Vcore,16 GB memory,64 GB EBS storage
Each Task Node : 4Vcore,16 GB memory,50 GB EBS storage
Run Code Online (Sandbox Code Playgroud)
现在,通过上述配置,所有任务节点可用的累积内存为16*16=256 GB ,可用的累积 EBS 存储为50GB*16=800GB。所以这是我的两个疑问(因为我试图完全理解它是如何工作的)
假设我有一个名为“orderitems”的数据框,其架构如下
DataFrame[order_item_id: int, order_item_order_id: int, order_item_product_id: int, order_item_quantity: int, order_item_subtotal: float, order_item_product_price: float]
Run Code Online (Sandbox Code Playgroud)
因此,作为检查数据质量的一部分,我需要确保所有行都满足以下公式: order_item_subtotal = (order_item_quantity*order_item_product_price)。为此,我需要添加一个名为“valid”的单独列,对于满足上述公式的所有行,它应该将“Y”作为值,而对于所有其他行,它应该将“N”作为值。我决定使用 when() 和 else() 以及 withColumn() 方法,如下所示。
orderitems.withColumn("valid",when(orderitems.order_item_subtotal != (orderitems.order_item_product_price * orderitems.order_item_quantity),'N').otherwise("Y"))
Run Code Online (Sandbox Code Playgroud)
但它返回给我以下错误:
TypeError: 'Column' object is not callable
Run Code Online (Sandbox Code Playgroud)
我知道这是因为我试图将两个列对象相乘。但我不确定如何解决这个问题,因为我仍然在 spark 学习过程中。我想知道,如何解决这个问题。我在 Python 中使用 Spark 2.3.0