我对Hive和Spark我很陌生,但是我想做的感觉应该很简单。从本质上讲,我想从Python列出一份列表,然后仅从Hive中提取该列表中的钥匙的记录。这样:
my_list=['a','b','c','d']
new_dataset =
spark.sql(
select *
from hive_dataset
where variable_name in my_list)
在SQL语句之后,我什至可以处理它。这样:
my_list=['a','b','c','d']
new_dataset =
spark.sql(
select *
from hive_dataset)
new_dataset=new_dataset(new_dataset[variable_name] in my_list)
我知道这是一个非常通用的问题,但是我该怎么做?这甚至可能吗?
这应该起作用 -
my_list=['a','b','c','d']
your_filter = ','.join(["'" +i + "'" for i in my_list])
new_dataset = spark.sql("SELECT * FROM hive_dataset WHERE variable_name IN ({})".format(your_filter))
您可以转换为元组
my_list=['a','b','c','d']
new_dataset = spark.sql(f"""SELECT *
FROM hive_dataset
WHERE variable_name IN {tuple(my_list)}
""")