我使用过 pandas dataframe,需要对数据进行一些基本的选择/过滤,但是在 pyspark dataframe 中。我正在将脚本作为 aws 粘合作业运行。我是否需要将 pyspark 数据帧转换为 pandas df 来执行一些基本操作,例如过滤和选择下面的 pandas 版本。
我的问题,pandas 和动态 pyspark dataframe 之间在我们如何选择/过滤数据方面有什么区别吗?
熊猫版
import pandas as pd
df = pd.read_csv('abc.csv')
#select and merge column values
df['combined'] = df['first_name'] + ' ' + df['last_name']
filter_result = df[df['martial_status'] == 'married']
...
from pyspark.context import SparkContext
from awsglue.context import GlueContext
ctx= SparkContext.getOrCreate()
glue_ctx = GlueContext(ctx)
dynamic_frm = glue_ctx.create_dynamic_frame_from_options(
connection_type='s3',
connection_options={'paths': ['s3://.../abc.csv']},
format='csv'
)
这里是 pyspark 中的等效代码:
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql.functions import concat_ws, col
ctx = SparkContext.getOrCreate()
glue_ctx = GlueContext(ctx)
# Load data into DynamicFrame
dynamic_frm = glue_ctx.create_dynamic_frame_from_options(
connection_type='s3',
connection_options={'paths': ['s3://.../abc.csv']},
format='csv'
)
# Convert DynamicFrame to DataFrame
spark_df = dynamic_frm.toDF()
spark_df = spark_df.withColumn('combined', concat_ws(' ', col('first_name'), col('last_name'))
filter_result = spark_df.filter(col('martial_status') == 'married')