Короткий ответ: если вы работаете с объектами Spark, вы придерживаетесь искровых объектов, если вы работаете с pandas объектами, вы придерживаетесь pandas объектов. Если вы хотите смешать их вместе, вам следует явно преобразовать их из одного «мира» в другой «мир».
Так что в этом случае, если вы хотите работать с spark.sql
, самый простой способ - преобразовать encounter_list
в другой искровой объект. Минимальный пример здесь:
import pyspark
from pyspark.sql import SparkSession
import pandas as pd
df = pd.DataFrame({
'a': [1,2,3],
'b': [4,5,6]
})
# pretend this is your list of ids you are filtering off.
df2 = pd.DataFrame({
'a': [1]
})
spark = SparkSession.builder.appName("example").getOrCreate()
spark_df = spark.createDataFrame(df)
spark_df2 = spark.createDataFrame(df2)
spark_df.registerTempTable("spark_df")
spark_df2.registerTempTable("spark_df2")
result = spark.sql("""select * from spark_df where a in (select a from spark_df2)""")