Фрейм данных Spark ничего не выбрать - PullRequest
0 голосов
/ 31 мая 2018

Как ничего не извлечь из искрового фрейма данных.

Мне нужно что-то вроде этого,

df.where ("1" === "2")

Мне нужно это, чтобы яможно сделать левое соединение с другим кадромПо сути, я пытаюсь избежать перекоса данных при объединении двух информационных фреймов, разделяя столбцы с нулевым и ненулевым ключами и объединяя их по отдельности, а затем объединяя их.

df1 имеет 300M записей, из которых 200M записей имеют Nullключи.У df2 есть еще 300M записей.

Итак, чтобы присоединиться к ним, я разделяю df1, содержащий нулевые и не нулевые ключи, и затем соединяю их с df2.поэтому, чтобы соединить кадр данных с нулевым ключом с df2, мне не нужны никакие записи из df2.

Я могу просто добавить столбцы из df2 в нулевой ключ df1, но любопытно посмотреть, есть ли у нас что-то подобное вspark

df.where ("1" === "2")

Как мы делаем в SQL RDBMS.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

where функция вызывает filter функцию на внутреннем уровне, поэтому вы можете использовать filter как

import org.apache.spark.sql.functions._
df.filter(lit(1) === lit(2))

или

import org.apache.spark.sql.functions._
df.filter(expr("1 = 2"))

или

df.filter("1 = 2")

или

df.filter("false")

или

import org.apache.spark.sql.functions._
df.filter(lit(false))

Любое выражение, которое будет возвращать false в функции filter, будет работать .

0 голосов
/ 31 мая 2018

Есть много разных способов, например limit:

df.limit(0)

, где с Column:

import org.apache.spark.sql.functions._

df.where(lit(false))

, где с String выражением:

df.where("false")

1 = 2, выраженное как

df.where("1 = 2")

или

df.where(lit(1) === lit(2))

, также будет работать, но более многословно, чем требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...