Фильтрация набора данных улья на основе списка Python

Я довольно новичок в ульях и искрах, но то, что я хочу сделать, кажется, должно быть простым. По сути, я хочу взять список из Python, а затем извлекать только записи из улья, у которых есть ключ в этом списке. Так:

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)

Я знаю, что это довольно общий вопрос, но как мне это сделать? Это вообще возможно?

Для второго метода вы можете использовать isin: new_dataset=new_dataset.where(new_dataset[variable_name].isi‌​n(my_list))

pault 18.03.2019 20:21

Возможный дубликат Фильтрация Pyspark DataFrame с SQL-подобным предложением IN

pault 18.03.2019 20:22
docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/spa‌​rk/… хорошо читает
thebluephantom 18.03.2019 21:24

Возможный дубликат stackoverflow.com/questions/55288734/…. Я обновил свой ответ для подхода на основе DF и sql.

Shantanu Sharma 25.03.2019 12:49
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
581
1

Ответы 1

Это должно работать -

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))

Другие вопросы по теме